Vs+Qt添加ui子页面

news/2024/11/14 13:03:45/文章来源:https://www.cnblogs.com/Yami-Wa/p/18354803

在Qt项目中,如果要实现一个弹出子界面并包含返回按钮的功能,最合适的选择是使用 Qt Dialog Form File 来创建子界面。

Qt Dialog Form File 与 Qt Widget Form File 的区别

Qt Dialog Form File (Button Bottom) 和 Qt Dialog Form File (Button Right):
这两种文件类型用于创建对话框(Dialog),其中包含了默认的按钮布局:
Button Bottom:按钮(如“OK”、“Cancel”)默认在对话框底部。
Button Right:按钮默认在对话框右侧。
对话框通常用于弹出窗口,它可以模态(阻塞父窗口的交互)或非模态。对话框有自己的事件循环,可以独立于主窗口运行,且在关闭时可以直接销毁。在 Qt Dialog Form File 中也可以显示 QOpenGLWidget 等窗口类型。

Qt Widget Form File:
这种文件类型用于创建一个普通的窗口部件(Widget),可以是主窗口的一部分,也可以作为独立窗口使用。和对话框不同,它没有自己的事件循环,因此更适合作为主窗口的一部分,而不是独立弹出的子界面。

VS+Qt添加ui子界面示例

基本功能:
在qtwidgetsapplication1.ui主界面中添加确认按钮,点击确认按钮能弹出一个子界面,子界面中也有返回按钮,点击返回子界面消失。

  1. 添加ui文件
    image

image

  1. 修改ui界面对象名称并删除所有原先槽函数,根据需要修改按钮名称
    image

  2. 主ui界面中添加按钮并修改名称
    image

  3. 添加子窗口对应类文件并修改类的头文件属性
    image

image

image

image

  1. 添加程序代码
# qtwidgetsapplication1.cpp
#include "qtwidgetsapplication1.h"
#include "subdialog.h"QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent): QWidget(parent), subDialog(nullptr)  // 初始化子界面指针为 nullptr
{ui.setupUi(this);connect(ui.confirmButton, &QPushButton::clicked, this, &QtWidgetsApplication1::onConfirmButtonClicked);
}QtWidgetsApplication1::~QtWidgetsApplication1() {if (subDialog) {delete subDialog;  // 清理子界面}
}void QtWidgetsApplication1::onConfirmButtonClicked() {if (!subDialog) {subDialog = new SubDialog(this);  // 创建子界面实例}subDialog->show();  // 显示子界面
}
# qtwidgetsapplication1.h
#pragma once#include <QtWidgets/QWidget>
#include "subdialog.h"  
#include "ui_qtwidgetsapplication1.h"class QtWidgetsApplication1 : public QWidget {Q_OBJECTpublic:QtWidgetsApplication1(QWidget* parent = nullptr);~QtWidgetsApplication1();private slots:void onConfirmButtonClicked(); private:Ui::QtWidgetsApplication1Class ui;SubDialog* subDialog;  
};
# subdialog.cpp
#include "subdialog.h"SubDialog::SubDialog(QWidget* parent): QDialog(parent) {ui.setupUi(this);connect(ui.returnButton, &QPushButton::clicked, this, &SubDialog::onReturnButtonClicked);
}SubDialog::~SubDialog() {}void SubDialog::onReturnButtonClicked() {this->close();  
}
# subdialog.h
#pragma once#include <QDialog>
#include "ui_subdialog.h"class SubDialog : public QDialog {Q_OBJECTpublic:explicit SubDialog(QWidget* parent = nullptr);~SubDialog();public slots:void onReturnButtonClicked();  // 返回按钮的槽函数private:Ui::SubDialog ui;
};
  1. 运行即可
    image

说明:运行后可查看系统自动生成的ui_xxx.h文件
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781733.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 22.04 安装 docker(服务器从毛胚到精装)

1、用户操作 阿里云默认是 root 用户,我们一般要自己创建一个用户,然后给该用户 sudo 权限 添加用户 sudo adduser newUserName赋予sudo权限 sudo usermod -aG sudo newUserName删除用户 sudo deluser --remove-home --remove-all-files newUserName切换用户 sudo su - newUs…

Mac os的防火墙导致开的热点手机连不上

在工位上用Mac给手机开热点用,结果今天手机一直连不上Mac开的热点,最后把Mac的防火墙关了就能让手机连上了,连上了再把防火墙打开也不影响连接。

k8s技术总结(一)

在学习完docker之后,也很有必要再学习k8s的一些理论和技术。 一、基础概念 kubernetes(k8s)和docker在容器管理领域具有不同的侧重点和优势。当前docker主要关注单个容器的构建、运行和管理,而k8s则专注于大规模的容器编排和管理。k8s在以下几个特性中,更具有优势。 特性1…

TIM-定时器

TIM简介定时器类型

C# 创建 Windows Service 项目

C# 创建 WindowsService 服务项目空白处,右键选择“添加安装程序”可以看到两个控件,点击右击第一个控件,打开属性设计器,将其中的Account设置为LocalSystem(本地服务),接下来,右击上面的第二个控件,打开属性界面,设置ServiceName,和将其中的StratType设置为Automatic…

【日记】我也想喝 AD 钙(978 字)

正文周五写了一整天学海计划,周六跟了一天的编曲教程,今天则是把第三章剩下的教程跟完。最后,回旋曲写是写出来了,就是把自己听笑了。写得实在太烂了。昨天晚上买了回来的机票。9 月 10 号一早。该说不说机票是真的贵啊……同时,我发现我过去的机票,执飞飞机是波音 737-8…

Kubernetes-二进制高可用部署v1.23.x

目录高可用架构k8s集群组件ectdkube-apiserverkube-schedulerkube-controller-managerkubeletkube-proxykubectl高可用分析负载均衡节点设计1.环境准备1.1 环境规划1.2 所有节点配置host解析1.3 安装必备工具1.4 所有节点关闭防火墙、selinux、dnsmasq、swap1.5 Master01节点免…

使用Pandas和NumPy实现数据获取

公众号本文地址:https://mp.weixin.qq.com/s/Uc4sUwhjLTpOo85ubj0-QA以某城市地铁数据为例,通过提取每个站三个月15分钟粒度的上下客量数据,展示Pandas和Numpy的案例应用。数据:http://u6v.cn/5W2i8H http://u6v.cn/6hUVjk初步发现数据有三个特点::1、地铁数据的前五行是…

Datawhale X 魔搭 AI夏令营(二)

一.AI生图的伦理与道德 1.虽然AI生图的能力强大,但是极易被使用在不正当的场景,未来的挑战不仅仅是技术的突破,更有攻防技术的跟进。 二.使用通义千问工具对内核代码进行解析,更快速的搭建代码 1.通义千问是具有信息查询、语言理解、文本创作等多能力的AI助手 2.使用方法三…

docker 详细教程(通俗易懂,带有应用示例)

1、Docker 基本概念 什么是 Docker? Docker 是一个开源的容器化平台,允许开发者封装他们的应用程序及其所有依赖项到一个标准化的单元中,这个单元被称为“容器”。容器可以在任何支持 Docker 的环境中运行,从而确保应用程序的可移植性和一致性。 Docker 的优势一致性和可移…

for循环练习

static void Main(string[] arg){int intSum = 0;for (int i = 0; i <= 100; i++){intSum += i;}Console.WriteLine(intSum);Console.ReadKey();}static void Main(string[] arg){for (int i = 0; i < 100; i++){Console.WriteLine("我下次一定小心!");//打印&…