QWidget关闭子窗口后显示主窗口(父窗口)

2023-11-16

已经弃坑,不再使用Qt工具,有疑问可以查阅博主的其它博客,看看有没有解决方案,如果还没有可以百度或Google搜一下其他博主的教程!谢谢~

Holle~

好久没见了,据我上次发博客已经过去很久。今天呢,带给大家一个Qt上的小问题!

好多初学者在Qt中,常常遇到关闭子窗口后,如何才能将上一级的窗口重新显示出来。众所周知的是,我们使用QDialog的exec函数可以实现上面的问题,但我们除了QDialog就不能在使用QWidget的时候也如此调用??事实上是不能的!

QDialog普遍来说是一种对话框的形式,而QWidget是窗体(窗口)

在QWidget中想要实现上述功能,需要信号槽关联,具体操作请参照下面的代码:

父窗口的头文件

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3 
 4 /**
 5      * 工程名:Test
 6      * 作者:夜潇
 7      * 日期:2018-03-26 周一
 8      * 时间:17:23:30
 9      * */
10 
11 #include <QWidget>
12 #include <QPushButton>
13 #include "child.h"
14 
15 class Widget : public QWidget
16 {
17     Q_OBJECT
18 
19 public:
20     Widget(QWidget *parent = 0);
21 private:
22     QPushButton *NewBtn;
23     ChildWin *childWin;
24 private slots:
25     void NewBtnClick(); //为了更好地观察,定义一个按钮事件用来触发子窗口加载
26 };
27 
28 #endif // WIDGET_H

父窗口的源文件:

 1 #include "widget.h"
 2 /**
 3  * 此文件主要实现,QWidget窗口父子之间的相互加载
 4  * ——夜潇
 5  * */
 6 Widget::Widget(QWidget *parent)
 7     : QWidget(parent)
 8 {
 9     setFixedSize(800,640);
10     NewBtn = new QPushButton("加载子窗口",this);
11     connect(NewBtn,SIGNAL(clicked(bool)),this,SLOT(NewBtnClick()));
12 }
13 
14 void Widget::NewBtnClick()
15 {
16     //功能实现:新建子窗口并且加载子窗口隐藏或关闭父窗口
17     childWin = new ChildWin;
18     childWin ->show();
19     this -> hide();
20     //功能实现:当子窗口触发了关闭事件后,主窗口获取的子窗口关闭信号并还原主窗口
21     connect(childWin,SIGNAL(ExitWin()),this,SLOT(show()));
22 }

子窗口的头文件:

 1 #ifndef CHILD_H
 2 #define CHILD_H
 3 
 4 #include <QWidget>
 5 #include <QCloseEvent>
 6 class ChildWin : public QWidget
 7 {
 8     Q_OBJECT
 9 public:
10     ChildWin(QWidget *parent = 0);
11     //重写关闭事件
12     void closeEvent(QCloseEvent *);
13 signals:
14     void ExitWin();//新建一个信号槽
15 };
16 
17 #endif // CHILD_H

子窗口的源文件:

 1 #include "child.h"
 2 
 3 ChildWin::ChildWin(QWidget *parent) : QWidget(parent)
 4 {
 5     setFixedSize(400,320);
 6 }
 7 //当窗口出发关闭事件后,将信号发射出去
 8 void ChildWin::closeEvent(QCloseEvent *)
 9 {
10     emit ExitWin();
11 }

上述源码经测试通过,如有疑问请留言或者联系邮箱:1285015525@qq.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QWidget关闭子窗口后显示主窗口(父窗口) 的相关文章

  • 带 Qt 的菜单栏/系统托盘应用程序

    我是 Qt PyQt 的新手 我正在尝试制作一个应用程序 其功能将从菜单栏 系统托盘执行 这里展示了一个完美的例子 我找不到关于如何做到这一点的好资源 有人可以建议吗 Thanks 我认为您正在寻找与QMenu and QMainWindo
  • 通过CMake实现Qt项目

    我正在尝试通过 Cmake 构建并运行非常简单且基本的 Qt 示例 删除 pro 文件 以下是Qt项目的代码 自动生成的Qt项目的目录结构为 Cmake my project name headers mainwindow h source
  • QPainter 性能高帧率

    我试图在 QPainter 中以 60fps 的速度显示视频 在 OpenGLwidget 中 我遇到一个问题 有时绘图花费的时间太长 并且在使用 QPainter 时发生下一个重绘事件 这会生成警告和随机崩溃 有几个问题 是否有一种 Qt
  • 如何将 QByteArray 转换为十六进制字符串?

    我有打击QByteArray QByteArray ba ba 0 0x01 ba 1 0x10 ba 2 0x00 ba 3 0x07 我真的不知道如何将此 QByteArray 转换为结果字符串 其中包含 01100007 我将使用 Q
  • 在 Qt 5 中嵌入 Python

    我想将 Python 解释器嵌入到 Qt 5 应用程序中 我在 Qt 5 中有一个工作应用程序 但是当我把 include
  • 如何从浮点数组创建新的 QImage

    我有一个代表图像的浮点数数组 列在前 我想在 QGraphicsSecene 上将图像显示为 QPixmap 为了做到这一点 我尝试使用 QImage 构造函数 QImage const uchar data int width int h
  • 如何为 qmlRegisterSingletonType 实现单例提供程序?

    我想在 QML 中使用 C 类作为 Singleton 实例 并认为我必须使用 qmlRegisterSingletonType 注册它们 此函数需要一个提供已注册 C 类的实例的函数 我在 Windows 上使用最新的 Qt 5 3 1
  • Qt5和QML:如何使用WebEngine Quick Nano浏览器自动输入用户名和密码

    我正在使用编写一个小应用程序Qt and QML使用 Qt 文档中的示例WebEngine Quick Nano 浏览器 https doc snapshots qt io qt5 5 9 qtwebengine webengine qui
  • Qml 和模糊图像

    我想使用 QML 实现模糊效果 我找到了有关 效果 模糊 的参考资料 例子 http qt gitorious org lscunha qt components lscunha qt components blobs d78feec567
  • 仅在内部/外部抚摸路径?

    Given a QPainterPath http qt project org doc qt 4 8 qpainterpath html如何仅在路径的内侧或外侧边缘 或非闭合路径的左侧或右侧 描边路径 QPainter strokePat
  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • 如何在Qt 5中的paintEvent上使用mouseMoveEvent?

    我是 Qt 和 c 的新手 所以我遇到了一些困难 我正在尝试创建一个小部件 它可以获取 mouseMoveEvent 位置并在鼠标位置的像素图上绘制椭圆 下面你可以看到代码 include myimage h include
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 如何去除QWizard中的水平线?

    我正在研究一个样式表QWizard我想删除按钮上方的水平线 我尝试递归浏览所有小部件并将其边框设置为无 但似乎没有任何小部件具有此边框 这是我的代码 可以找到完整的可构建示例here https gist github com ardeid
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A

随机推荐

  • 服务大厅支撑系统 服务器,GB∕T 36639-2018 信息安全技术 可信计算规范 服务器可信支撑平台(高清版).pdf...

    2018年新发布国家标准 即将实施 及早知悉 把握先机 ICS35 040 L80 中华人 民共和 国国家标准 GBT36639 2018 信息安全技术 可信计算规范 服务器可信支撑平台 Informationsecurittechnolo
  • 模拟电路设计(11)--- 运算放大器实际使用注意事项

    判断是否负反馈状态 我们先来说下什么是负反馈 凡是将放大电路输出量 电压或电流 直流或交流 的一部分或全部 通过一定的电路 称为反馈电路 以一定的方式 串联或并联 反送到放大电路的输入电路 减小净输入量 从而使输出量比无反馈时也随之减小的反
  • 灾难恢复! 关于做过快照的AVHD文件合并成VHD .

    http bbs 51cto com thread 964919 1 html 应用实例 某公司新装一台虚拟化服务器 采用W2008R2 用三个硬盘 其中一个固态硬盘用来做父系统 2个SAS硬盘做RAID1 存储VHD 某管理员3个月前安装
  • 防火墙双机热备

    目录 防火墙双机热备概述 VRRP VRRP术语 VRRP和Cisco的HSRP的区别 VRRP的状态机 VRRP的工作原理 双机热备的备份方式自动备份 该莫试下 和双机热备有关的配置命令只能在主用设备上配置 主用设备自动将状态信息同步到备
  • Elasticsearch5.5-IK分词器安装

    0 下载对应的版本IK https github com medcl elasticsearch analysis ik releases 1 在elasticsearch的plugins文件夹下新建ik目录 2 讲下载下来的ik分词器解压
  • python 解决约瑟夫环问题

    题目1 计算约瑟夫环问题 tips 幸运的基督徒 有15个基督徒和15个非基督徒在海上遇险 为了能让一部分人活下来不得不将其中15个人扔到海里面去 有个人想了个办法就是大家围成一个圈 由某个人开始从1报数 报到9的人就扔到海里面 他后面的人
  • (div+css特效代码) 导航菜单栏

    截图效果 Jsp代码
  • System用法详细解析

    System类代表系统 系统级的很多属性和控制方法都放置在该类的内部 该类位于java lang包 由于该类的构造方法是private的 所以无法创建该类的对象 也就是无法实例化该类 其内部的成员变量和成员方法都是static的 标准输入输
  • OpenStack实例控制台报错

    OpenStack实例控制台报错1006 环境说明 操作系统信息 CentOS Linux release 7 9 2009 Core Linux node2 yun com 5 4 226 1 el7 elrepo x86 64 Open
  • Mysql数据库第十三课-----------sql语句的拔高3--------直冲云霄

    作者前言 作者介绍 作者id 老秦包你会 简单介绍 喜欢学习C语言和python等编程语言 是一位爱分享的博主 有兴趣的小可爱可以来互讨 个人主页 小小页面 gitee页面 秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 sql语句的拔高
  • linux常用性能观测工具---硬件相关

    rdmsr 在Linux内核源码中提供了读写CPU MSR寄存器模块 使可以在用户空间直接读写MSR寄存器 开源社区提供msr寄存器读写工具msrtools 其中有两个命令 rdmsr wrmsr 要使rdmsr wrmsr命令真正可以读写
  • 红帽linux系统安装指导

    第1步 在虚拟机管理界面中单击 开启此虚拟机 按钮后数秒就看到RHEL 7系统安装界面 如图1 26所示 在界面中 Test this media install Red Hat Enterprise Linux 7 0和Troublesh
  • 第九届蓝桥杯单片机省赛题彩灯

    参考佬中佬 但不搬运 http t csdn cn 4tnjz include
  • @responsebody

    表示该方法的返回结果直接写入HTTP response body中 一般在异步获取数据时使用 在使用 RequestMapping后 返回值通常解析为跳转路径 加上 responsebody后返回结果不会被解析为跳转路径 而是直接写入HTT
  • Qt设置部件透明及阴影效果

    窗体和部件透明 设置整个窗体透明属性 0 1 0 完全透明 1 不透明 setWindowOpacity 0 5 窗口透明 部件不透明 设置窗口透明 部件不透明 须配合无边框窗体使用 setWindowFlags Qt FramelessW
  • 教你怎么在linux上永久修改IP地址

    经常移动电脑而使电脑ip改变 有两种方式 在创建虚拟机时使用NAT模式和桥接模式 使用NAT模式 就是虚拟机ip所依赖主机的ip而产生 使用桥接模式 不依赖主机ip而产生ip 相当于在当前网络中有一个电脑占据了这个ip 使用NAT模式 本身
  • HttpMediaTypeNotAcceptableException的解决过程

    今儿的Web项目中突然报错 HttpMediaTypeNotAcceptableException Could not find acceptable representation 涉及接口是 RequestMapping value X
  • JAVA语言特点

    Java语言特点 Java语言是面向对象的 oop Java语言是健壮的 Java的强类型机制 异常处理 垃圾的自动收集等是Java程序健壮性的重要保障 Java语言是跨平台性的 即一个编译好的 class文件可以在多个系统下运行 借助各系
  • 创建Vue3.0工程和常用 Composition API

    一 创建Vue3 0工程 1 使用 vue cli 创建 官方文档 https cli vuejs org zh guide creating a project html vue create 查看 vue cli版本 确保 vue cl
  • QWidget关闭子窗口后显示主窗口(父窗口)

    已经弃坑 不再使用Qt工具 有疑问可以查阅博主的其它博客 看看有没有解决方案 如果还没有可以百度或Google搜一下其他博主的教程 谢谢 Holle 好久没见了 据我上次发博客已经过去很久 今天呢 带给大家一个Qt上的小问题 好多初学者在Q