模态和非模态对话框

Qt:模态对话框和非模态对话框 模态对话框及非模态对话框(详情见课本P51)。 模态对话框:在没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。 非模态对话框:当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。 非模态对话框(Modeless Dialog)的概念是一个概念,不仅仅Qt中具有,在其他不同的平台下 也都存... 阅读详情
  1. 模式对话框创建后,程序的其他窗口便不能进行操作,必须将该窗口关闭后,其他窗口才能进行操作。而非模式对话框则无需这样,它不强制要求用户立即反应,而是与其他窗口同时接受用户操作。

    模态对话框创建和销毁

    模式对话框一般是使用DoModal创建的,响应IDOK和IDCANCEL进行销毁,如:

    <span style="background-color: rgb(0, 0, 0);">
    </span><span style="font-family:SimSun;"></span><span style="font-family:SimSun;">CTestDlgdlg;</span><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">inti;</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">i= dlg.DoModel();</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">if(i == IDOK)</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">{</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">    //do something</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">}</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">elseif(i == IDCANCEL)</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">{</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">    //do other something</span></p><p style="margin-bottom: 0cm;" align="LEFT"><span style="font-family:SimSun;">}</span>
    </p>

    非模态对话框创建和销毁

    非模式对话框是使用Create创建的,非模态对话框需要重载函数OnCanel,并且在这个函数中调用DestroyWindow;并且不能调用基类的OnCancel,因为基类的OnCancel调用了EndDialog这个函数,这个函数是针对模态对话框的。
    还有一个必须重载的函数就是PostNcDestroy,这也是一个虚函数,通常的非模态对话框是用类的指针,通过new创建的,这就需要在PostNcDestroy函数中delete掉这个指针。如果要在点击按钮的情况下,销毁非模态对话框,只需要把按钮的事件映射到OnCancel函数即可。

    例子:

    //建立
    
    //主框架中:
    
    CTestDlg*pDlg=newCTestDlg();
    pDlg->Create(IDD_TESTDLG,this);
    pDlg->ShowWindow(SW_SHOW);
    
    //销毁
    
    //对话框中:
    
    voidCTestDlg::OnCancel()
    {
     DestroyWindow();
    }
    voidCTestDlg::PostNcDestroy()
    { 
    CDialog::PostNcDestroy();
    delete this;
    }


模态对话框和非模态对话框 分类:模态对话框工作状态:当它获得焦点时,将垄断用户的输入,在完成本对话框之前,用户无法对本程序的其他部分进行操作。非模态对话框类似于WORD里的查找替换,就在应用程序打开非模态对话框的同时还可以切换到其他窗口进行操作。二者的类都派生于CDialog类,而CDialog类派生于CWnd类。区别:模态对话框使用CDialog::DoModal函数创建以及销毁。初始化消息WM_INITDIALOG,调用OnInitDialog初始化并显示,创建完毕后,DoModal启动消息循环。DoModal运行时候,程序会停 阅读详情

相关推荐

模态对话框和非模态对话框的创建与销毁

首先声明:在网上看了很多资料,很多内容也是从别人那里学到的,只是结合自己的使用写下来。 在VS中对话框分两种:模态对话框和非模态对话框。 模态对话框就是一旦我被打开了,就得完全做我的事情,只有把我关了,你才能做其他的事情。 非模态对话框就是你把我打开了,可以去干点别的,什么时候想起我来了,就用用,甚至可以直接把我灭了。 不管要哪种对话框,以下两步必须得做: 1、在资源中(或者

u010648580的博客 2093

VC++模态对话框和非模态对话框

MFC中有两种类型的对话框:模态对话框和非模态对话框。 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务。非模态对话框是指当其显示时,允许转而执行程序中其他任务,而不用关闭这个对话框。 模态对话框的创建:创建模态对话框需要调用CDia

Ryan 的 Blog 3187

VC模态对话框和非模态对话框的创建和关闭

Windows下的对话框分为两类:Modal dialog boxes 和Modeless dialog boxes,即模态对话框和非模态对话框。         一、概述:MSDN里面对它们的概述分别是:        Modal dialog boxes require users to complete and close before continuing with the owner

xbmoxia的专栏 3319

VS2010/MFC编程入门之十(对话框:模态对话框及其弹出过程)

加法计算器对话框程序大家照着做一遍后,相信对基于对话框的程序有些了解了,有个好的开始对于以后的学习大有裨益。趁热打铁,鸡啄米这一节讲讲什么是模态对话框和非模态对话框,以及模态对话框怎样弹出。        一.模态对话框和非模态对话框        Windows对话框分为两类:模态对话框和非模态对话框。        模态对话框是这样的对话框,当它弹出后,本应用程序其他窗口将不

Cesar Wu 2165

Star CCM+中的物性参数(定值、多项式、查表)

仿真过程中我们一定会遇到设置物性参数的问题,对于固定的物性参数还好说,直接输入一个固定的值即可。但是对于冷却液、气体、两相流等,物性参数是随着温度或温度和压力变化的。此时就涉及到多项式和查表。首先创建物理连续体,选择计算模型。

2201_75375391的博客 2958

大模型时代的具身智能系列专题(二)

自由形式语言指令 L 指定了一个操作问题,例如“打开最顶部的抽屉”。然而,根据 L 生成机器人轨迹是很困难的,因为 L 可能具有任意长度,或者是不明确的(例如,需要上下文语义)。相反,我们专注于问题的各个阶段(子任务)l_i,它们明确地指定了一个操作任务 (例如,“抓住抽屉把手”,“打开抽屉”),其中被分解的子阶段(子任务)L→l1l2lnL→l1​l2​...ln​由高级规划器(例如,一个LLM或一个基于搜索的规划器)给出。

achao的专栏 2173

模式对话框与非模式对话框的区别

模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对话框;关闭技术支持信息,在系统属性里选择硬件,点击设备管理器,弹出设备管理器窗口,现在再对系统属性窗口进行操作仍然可以操作,这种就叫做非模式对话框。 在

Sharing_Li的专栏 1590

vcs覆盖率相关

选择要查看的覆盖率点,右键选择 show xxx tests;

qq_40571921的博客 2394

Qt -- 19模态和非模态对话框

什么是模态和非模态对话框 点不了其他的功能和界面。 这种对话框就称为模态对话框。 还有一些能够操作其他的窗口属于非模态对话框。 下面新建一个工程

xuechanba的博客 4781

智能座舱(七)——智能音频系统

本文剖析车载智能音频系统的核心技术,聚焦音响、功放、麦克风和广播收音机四大组件。音响系统通过多声道布局(如23扬声器阵列)结合动态声场校准算法,实现三维声场覆盖;功放系统采用高效D类技术,支持OTA音效调整和故障自愈;麦克风阵列运用波束成形技术实现精准拾音,并保障隐私安全;广播系统融合数字与网络技术提升音质。核心在于硬件标准化与算法差异化的协同,未来将朝集成化、AI个性化方向发展。

DC20160101的博客 1574

cefshap(C#)定义浏览器的右键菜单

菜单效果:复制(自带),搜索文本,打开链接,复制链接,刷新,检查,关于 public class MenuHandler : IContextMenuHandler { //public event Action<string> PopupRequest; void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrows

无线智能模块 可视DIY智能专家 1705

Qt下的模态和非模态对话框

Qt下的模态和非模态对话框模态对话框(Modal Dialog)与非模态对话框(Modeless Dialog)的概念不是Qt所独有的,在各种不同的平台下都存在。又有叫法是称为模式对话框,无模式对话框等。 所谓模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。对于非模态对话框,当被打开时,用户既可选择和 该对话框进行交互,也可以选择同应用程序的其他窗口交互。在Qt中,显示一个对话框一般有两种方式,一种是使用exec()方法,它总是以模态来显示对话框;另一种是使用

hufeng825的专栏 6469

SAP_FICO模块-资产减值功能对折旧和残值的影响

SAP_FICO模块-资产减值操作对资产历史折旧以及后续折旧的影响,包括减值操作的配置前提

风沙的博客 2805

Qt 模态对话框和非模态对话框

Qt对话框分为模态和非模态两种: 模态对话框使用exec()方法实现阻塞式交互,用户必须关闭后才能操作其他窗口,适用于关键操作确认。推荐使用exec()创建,确保严格的模态行为。 非模态对话框通过show()方法非阻塞显示,允许同时操作其他窗口(如查找替换对话框),需动态创建并自行管理内存。 主要区别:模态对话框阻塞代码流并独占焦点,非模态对话框异步运行。开发时需注意模态对话框避免长任务阻塞,而非模态对话框需妥善处理生命周期。根据交互需求选择合适类型。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 1322

【GEOS-Chem模拟教程第二期上】生物质燃烧排放 GFED4 数据配置

生物质燃烧排放 GFED4 数据配置

WW、forever的博客 1301

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

前程算法屋的博客 5593

非模态对话框和模态对话框_创建

一、非模态对话框:创建后,主程序还可以运行。 创建步骤如下: 1.1先建立一个基本对话框MFC工程,在资源列表添加一个对话框资源 1.2将创建的对话框修改名字和ID,比如将ID名为:IDD_TIP_DIALOG   1.3给对话框添加一个类,类名称为:TipDlg。(注意:TipDlg类的基类为CDialog) 则在解决方案列表可以看到创建了一个TipDlg.h

净无邪博客 7182

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C#模态对话框和非模态对话框

因为工作中出现的问题,来记录一下涉及到的模态和非模态对话框 简要介绍一下两个的区别: 非模态对话框 模态对话框 调用窗口方式 窗体实例化对象.show() 窗体实例化对象.showdialog() 弹出后 可以切换到其他界面 未关闭前不能切换到其他界面 关闭后 自动释放资源,托管方式进行垃圾回收;DialogResult.ToStrri...

hi_baymax的博客 2307

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MFC 创建非模态对话框和销毁过程

今天项目中遇到的问题,记录下来,做个总结。 一个简单的目的是创建一个非模态对话框并在对话框关闭后将其销毁。 这里的销毁包括:销毁对话框对象资源和对话框对象指针; 首先说创建对话框: 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。 点击模态对话框中的OK按钮,模态对话框会被销

MachiealFactory的博客 2万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Qt编程 —— 模态对话框和非模态对话框

在Qt中的对话框依旧分为模态对话框和非模态对话框两种。接下来我们将依次介绍下它们的使用方法。

Aliven888的博客 1914

<MFC>模态对话框和非模态对话框的创建弹出

一、模态对话框的创建及显示 1、Windows对话框分为两类:模态对话框和非模态对话框。     模态对话框:当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。 非模态对话框:它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。   2、模态对话框的弹出

xieziwei2008的专栏 3531

MFC模态对话框和非模态对话框

MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box)。 一、模态对话框(model dialog box) 在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消

candyliuxj 8万+
上一篇: 认识3DMAX的各种插件
下一篇: [VC++]控制台程序窗口隐藏
likeping
博客等级 码龄25年 41粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值