Qt5中用QWidget实现模态对话框和非模态对话框

qt 模态对话框,实现阻塞其他窗口 模态对话框,就是阻塞同一应用程序中其他可视窗口的输入的对话框.你必须完成当前对话框中的操作,才能对其他的窗口进行操作,否则你点击其他的窗口是没有任何反应的,你只能完成当前窗口操作.这相当是一个操作窗口顺序的问题.2,w1.setModal(true).调用该方法参数为true(条件真),此时就能达到阻塞其他窗口的目的.比该窗口晚出现的窗口就会被当前窗口阻塞.必须先操作当前窗口.3,w1.exec().该方法使当前窗口进入循环,成功模态,你结束了当前窗口循环时,才能对其他窗口进行操作. 阅读详情

利用继承自QWidget的类来实现自己的模态对话框和非模态对话框
一、模态对话框
MyWidget是你自己定义的类,继承自QWidget,在它的构造函数中添加:

第一步:
以下两句效果一样,选择一句添加即可

setAttribute(Qt::WA_ShowModal, true);
//setWindowModality(Qt::ApplicationModal);

第二步:

MyWidget *myWidgetPtr = new MyWidget(); //没有父指针
myWidgetPtr->show(); //显示出来的就是模态对话框
//myWidgetPtr->close(); //关闭,也可以在MyWidget类中调用this->close();关闭

二、非模态对话框
只有一步:
(构造函数中不要加添加setAttribute(Qt::WA_ShowModal, true);
或者用setAttribute(Qt::WA_ShowModal, false); 显示指定。)

MyWidget *myWidgetPtr = new MyWidget(this); //必须有父指针
myWidgetPtr->show(); //显示出来的就是模态对话框
//myWidgetPtr->close(); //关闭,也可以在MyWidget类中调用this->close();关闭

额外说明:以上方法做出来的模态和非模态"对话框",模态的时候,显示的位置是默认位置,在屏幕中间;
而非模态的时候,它的位置是基于父窗口的。

自己定义一个doShow()函数,里面自己获取parent的左边和宽度,这样可以显示在父窗口的中间位置:

QRect parentRect = ((QWidget*)this->parent())->geometry();
move(parentRect.width()/2 - this->width()/2, parentRect.y()); //设置move到(0,0)点的时候,非模态窗口出现在父窗口的左上角
this->show(); 
Qt 5.12 多窗口程序实战:从登录对话框到主界面的优雅切换 本文详细介绍了使用Qt 5.12实现多窗口程序的实战技巧,重点讲解了从登录对话框到主界面的优雅切换方法。通过信号与槽机制、窗口生命周期管理和数据传递等核心技术的讲解,帮助开发者掌握Qt多窗口程序开发的关键要点,提升桌面应用的开发效率。 阅读详情

相关推荐

Qt5开发学习总结(三)——窗口部件的使用(QWidget和QDialog)

窗口部件 QT提供的默认基类只有QMainWindow、QWidget、和QDialog这三种,这三种窗体也是用的最多的,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,而他们全部继承自QWidget。不仅如此,所以的窗口部件都继承自QWidget,继承关系如图所示。 1.基础窗口部件QWidget QWidget类是所有用户界面对象的基类,被

. 5万+

Qt_QWidget窗体设置模态显示

【Qt】QWidget窗体的模态显示设置

FreeLikeTheWind的博客 6669

Qt对话框类QDialog学习

文章目录1. 简介2. 构造函数3. 成员函数4. 模态 VS 非模态5. 代码示例 1. 简介 QDialog类是对话框窗口的基类。QDialogs可以是模式对话框或无模式对话框,提供返回值,具有默认按钮 pro文件 QT+=widgets 头文件 #include<QDialog> 继承自QWidget QWidget:是所有用户界面对象的基类 QDialog:提供模式对话框或无模式对话框 2. 构造函数 QDialog::QDialog( QWidget *parent =

超级大洋葱的博客 3906

QWidget设置为模态对话框

QWidget设置为模态对话框

大酷茬子的博客 2873

解锁笔记智能对话:手把手配置 Obsidian Copilot 插件与硅基流动模型

本文详细介绍了如何为Obsidian笔记软件配置Copilot插件,并接入硅基流动AI模型,从而为个人知识库添加智能对话能力。通过手把手教程,指导用户完成插件安装、API Key获取、模型配置及索引构建,最终实现基于个人笔记内容的深度语义问答,提升知识管理效率。

corn8的博客 613

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 576

QWidget设置成模态对话框并弹框显示

无模式对话框(modeless dialog box 非模态对话框):模式对话框打开后,程序仍然能够进行其他工作(如一般的“查找与替换”对话框)模式对话框(modal dialog box模态对话框):在关闭模式对话框之前,程序不能进行其他工作(如一般的“打开文件”对话框)我们可以借助qt自带的类QObjectCleanupHandler来实现内存释放。具体用法,请自行百度。4、但是方法1和方法2会造成内存泄漏,因为Form的父类是空指针。或者使用类的成员变量,然后在析构函数删除这个指针。

$firecat利白的代码足迹$ 7372

北京途游游戏后端开发面经

北京途游游戏后端开发面经 我面试岗位是基于Python的后端开发工程师,主要是搞游戏的服务器开发。面试一共分了两轮,之后说是看看其他的候选人再定,感觉凉凉~~ 由于受到此次新型冠状病毒疫情的影响,本次面试采用视频面试的方式,下面是面试的时候面试官提的问题,python的基础知识还是问的比较多的。  一面:(32分钟微信视频)  简单做下自我介绍,   1.说一下你开发过的项目,挑一个说下你都做了...

weixin_45603043的博客 2125

QWidget实现模态对话框的效果

QT用QWidget实现类似QDialog::exec()模态对话框的效果

SkylineR36的博客 903

【鸿蒙南向开发】OpenHarmony——分布式数据对象之功能实践

通过本文的学习可了解到分布式数据对象的主要接口、大致调用方法和功能实现等。结合对应内容,可以进一步对分布式数据对象同步机制做深度学习。下一步,(1) 着重理解同步组网的构建原理。(2) 着重理解同步组网内,监听change和status变化的实现。●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

HarmonyOS_666的博客 1091

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2981

Qt 5.9.5学习笔记第二节课

学习目标: 了解Qt图形界面开发的基础知识,知道各种软件每个部分有什么组成。这是学习任 何图形界面的必备知识,该知识可以延展到工作中的任何图形界面开发中,比如MFC、GTK、 WxWidget等等。 Qt的两把利刃:UI设计器 + 信号与槽 Qt的坐标系 ...

柳一航的博客 596

comsol 多物理场仿真流程-以开关柜为例

1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于...

健忘16的博客 7020

【Qt】《Qt 5.9 C++开发指南》笔记-Chapter6-对话框与多窗体设计

Qt为应用程序设计提供了一些常用的标准对话框,如打开文件对话框、选择颜色对话框、信息提示和确认选择对话框、标准输入对话框等,用户无需再自己设计这些常用的对话框,这样可以减少程序设计工作量。在前面几章的实例中,或多或少地用到了其中的一些对话框。Qt预定义的各标准对话框的类,及其主要静态函数的功能见表6-1(由于输入参数一般较多,省略了函数的输入参数,只列出了函数的返回值类型)。表6-1 Qt预定义标准对话框对话框常用静态函数名称函数功能QFileDialog 文件对话框选择打开一个文件。

江湖人称菠萝包 320

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

HDOCK 蛋白蛋白对接软件使用;LZerD、pyDock、ClusPro网页在线对接

参考:hdock支持蛋白与蛋白,也支持蛋白与核酸对接计算。

weixin_42357472的博客 1万+

QWidget实现模态及非模态

1、对QWidget设置模态窗口有两种方法: 第一种是在构造函数中        setWindowFlags(Qt::FramelessWindowHint);        setAttribute(Qt::WA_showModal, true);        但这种方法已经在Qt4.5中被摒弃了,因为按照这样设置,对话框是无法使用触摸屏输入法的,只能用按键输入; 第二种是在构造函

Maybe 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

QT - 对话框[Dialog]

在qt中的main函数中大家总会看到一个exec()函数的调用方式,一般存在于函数的最后一行用来作为返回使用。w.show();一般看到的都是用来直接在main函数中进行做返回使用,main函数中做函数返回值都是返回给系统的,所以就明白这个exec()的作用肯定跟系统处理有关。

ZHW1202的博客 1293

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Qt中模态对话框和非模态对话框的区别

遇到现象: 在构造函数中使用如下方法,显示对话框;发现对话框一闪而过, 原因:在构造函数中定义的变量,构造函数执行完,变量会自动释放。 myWidget::myWidget(QWidget *parent):QWidget(parent),ui(new Ui::myWidget) { ui->setupUi(this); QDialog dialog(this); dialog.show(); } 注意:这个区别于main()函数中,使用dialog.show..

modi000的博客 1398

[pyqt5][原创]模态对话框和非模态对话框

setWindowModality()设置窗口模态。取值如下: Qt.NonModal - 非模态 Qt.WindowModal - 窗口模态 Qt.ApplicationModal - 应用程序模态 from PyQt5.QtCore import Qt from PyQt5.QtWidgets import * import sys '''本程序显示模态对话框使用,分别使用QWidge...

FL1623863129的博客 1388

Qt 继承QWidget或者QWidget直接弹出窗口(非模态对话框)(对话框)

Qt 继承QWidget或者QWidget直接弹出窗口(非模态对话框)(对话框)

m0_73443478的博客 2763

【Qt】对话框

在使用某些网站的时候,有时会不经意间弹出各种奇奇怪怪的窗口。这种窗口就被称之为对话框。

dab112的博客 2327

Qt5教程: (7) 模态/非模态对话框

模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。 非模态对话框就是在被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。 1. 新建工程 2. 添加菜单栏 创建"Dialog"菜单, 添加一个"模态对话框"项和"非模块对话框项": QMenuBar *menuBr = menuBar(); setMenuBar...

weixin_30646315的博客 254

QT之模态与非模态

模态对话框: 简单一点讲就是在弹出模态对话框时,除了该对话框整个应用程序窗口都无法接受用户响应,处于等待状态,直到模态对话框被关闭。这时一般需要点击对话框中的确定或者取消等按钮关闭该对话框,程序得到对话框的返回值(即点击了确定还是取消),并根据返回值进行相应的操作,之后将操作权返回给用户。这个时候用户可以点击或者拖动程序其他窗口。说白了就相当于阻塞同一应用程序中其它可视窗口的输入的对话框,用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它窗口。其实模态对话框的作用就是得到用户选择的

BUG之友的博客 1416

QT开发:深入掌握 QtGui 和 QtWidgets 窗口管理:QMainWindow、QDialog 和 QWidget 的高级应用

深入掌握 QtGui 和 QtWidgets 窗口管理:QMainWindow、QDialog 和 QWidget 的高级应用

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1943
上一篇: Qt5 常量中有换行符
下一篇: QML中ListView的几种数据模型
hp_cpp
博客等级 码龄11年 310粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值