QT模态对话框和非模态对话框区别以及常用标准对话框

QT模态对话框和非模态对话框区别以及常用标准对话框

1.概述

这篇文章介绍下对话框的分类,它分为模态对话框和非模态对话框。
模态对话框:打开对话框后,不能操作其他窗口
非模态对话框:打开对话框后,可以操作其他窗口

2.模态和非模态对话框示例

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);///*点击新建按钮弹出一个对话框* 对话框分为*      模态对话框: 对话框打开后,不可以操作其他窗口*      非模态对话框: 对话框打开后,可以操作其他窗口*/connect(ui->actionnew, &QAction::triggered,[=](){
//        模态对话框创建QDialog dlg(this);dlg.resize(300,200);
//        dlg.exec();qDebug() << "模态对话框弹出";//        非模态对话框创建// 将对话框对象创建在栈上,因为它不是阻塞的,改行代码运行结束后栈内存就回收了,所以看不到弹出的对话框QDialog dlg2(this);dlg2.resize(300,200);
//        dlg.show();//将对话框对象创建在堆上,就可以看到对话框。QDialog * dlg3 = new QDialog(this);/** 创建在对上的对象只有在关闭QWidget窗口时才会回收堆内存对象,如果没有关闭QWidget窗口,一直点击新建再关闭对话框会造成内存泄漏。* 使用setAttribute(Qt::WA_DeleteOnClose) 属性可以设置关闭对话框就释放堆内存上的对话框对象。*/dlg3->setAttribute(Qt::WA_DeleteOnClose);dlg3->show();});}MainWindow::~MainWindow()
{delete ui;
}

3.标准对话框

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);///*点击新建按钮弹出一个对话框* 对话框分为*      模态对话框: 对话框打开后,不可以操作其他窗口*      非模态对话框: 对话框打开后,可以操作其他窗口*/connect(ui->actionnew, &QAction::triggered,[=](){
//        模态对话框创建QDialog dlg(this);dlg.resize(300,200);
//        dlg.exec();qDebug() << "模态对话框弹出";//        非模态对话框创建// 将对话框对象创建在栈上,因为它不是阻塞的,改行代码运行结束后栈内存就回收了,所以看不到弹出的对话框QDialog dlg2(this);dlg2.resize(300,200);
//        dlg.show();//将对话框对象创建在堆上,就可以看到对话框。QDialog * dlg3 = new QDialog(this);/** 创建在对上的对象只有在关闭QWidget窗口时才会回收堆内存对象,如果没有关闭QWidget窗口,一直点击新建再关闭对话框会造成内存泄漏。* 使用setAttribute(Qt::WA_DeleteOnClose) 属性可以设置关闭对话框就释放堆内存上的对话框对象。*/dlg3->setAttribute(Qt::WA_DeleteOnClose);
//        dlg3->show();});//    标准消息框
//    错误提示框QMessageBox::critical(this,"错误提示框","错误");//    消息框QMessageBox::information(this,"消息","消息提示框");//    警告对话框QMessageBox::warning(this,"警告","警告内容");//    提问框/** 参数说明:* 参数1:QWidget 对象* 参数2:标题* 参数3:内容* 参数4:对话框按钮名称* 参数5:设置默认对话框按钮*/QMessageBox::StandardButton status = QMessageBox::question(this,"提问","提问题",QMessageBox::Help|QMessageBox::Close,QMessageBox::Close);
//     判断用户点击了哪个按钮if(status == QMessageBox::Help){qDebug() << "点击了帮助";}else{qDebug() << "点击了取消";}//     颜色提示框QColor color = QColorDialog::getColor(QColor(255,0,0));qDebug() << "r" << color.red() << "g" << color.green() << "b" << color.blue();//     文件对话框
//     参数1:父类,参数2:标题,参数3:路径,参数4:过滤器显示指定内容
//     返回值是选择的路径QString file = QFileDialog::getOpenFileName(this,"打开文件","/Users/bruce/Downloads","*.png");qDebug() << "文件对话框:" << file;//     字体对话框bool flag;QFont font = QFontDialog::getFont(&flag,QFont("华文彩云", 36));qDebug() << "字体" << font.family() << "字号" << font.pointSize() << "是否加粗" << font.bold() << "是否倾斜" << font.italic();}MainWindow::~MainWindow()
{delete ui;
}

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

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

相关文章

Github 2024-11-09Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-11-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10CUE项目1Python项目1Polars: Rust中的DataFrame接口和OLAP查询引擎 创建周期:1354 天开发语言:Rust, Python协议类型:MIT License…

CNN和MobileNetV2搭建的水果识别模型

一、 概述 1. 项目背景 水果是人们日常生活中重要的食品之一&#xff0c;其营养丰富、口感美味、色香俱佳&#xff0c;因此备受广大消费者的喜爱。 然而&#xff0c;在市场上&#xff0c;各种不同品种的水果琳琅满目&#xff0c;对于人类的肉眼识别来说并不容易实现。传统的检…

GEE 图表——ATom:气象测量系统(MMS)的测量数据,2016-2018 年

目录 简介 摘要 代码 引用 网址推荐 知识星球 机器学习 ATom: Measurements from Meteorological Measurement System (MMS), 2016-2018 简介 该数据集包含气象测量系统&#xff08;MMS&#xff09;仪器在四次 ATom 活动中的测量数据。 气象测量系统是一种最先进的仪器…

一文解秘Rust如何与Java互操作

本博客所有文章除特别声明外&#xff0c;均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情&#xff0c;而 Java 也可以享受 Rust 语言特性的内存安全&#xff0c;所有权机制&#xff0c;无畏并发。…

信息安全工程师(82)操作系统安全概述

一、操作系统安全的概念 操作系统安全是指操作系统在基本功能的基础上增加了安全机制与措施&#xff0c;从而满足安全策略要求&#xff0c;具有相应的安全功能&#xff0c;并符合特定的安全标准。在一定约束条件下&#xff0c;操作系统安全能够抵御常见的网络安全威胁&#xff…

微服务系列四:热更新措施与配置共享

目录 前言 一、基于Nacos的管理中心整体方案 二、配置共享动态维护 2.1 分析哪些配置可拆&#xff0c;需要动态提供哪些参数 2.2 在nacos 分别创建共享配置 创建jdbc相关配置文件 创建日志相关配置文件 创建接口文档配置文件 2.3 拉取本地合并配置文件 2.3.1 拉取出现…

线程级耗时统计工具类TimeWatcher

线程级耗时统计工具类TimeWatcher 先看效果 假设我们的业务代码逻辑是这样的 那么最终的日志打印效果为&#xff08;注&#xff1a;此为美化输出&#xff0c;也可设置为常规一行输出&#xff0c;还可自定义&#xff09; 2024-11-08T23:48:53.39008:00 INFO 31472 --- [nio-…

arkUI:Flex弹性布局的各个属性

arkUI&#xff1a;Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 &#xff08;Flex弹性布局的方向&#xff09;2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

详解Gemini API的使用:在国内实现大模型对话与目标检测教程

摘要&#xff1a;本博客介绍了如何利用Gemini API实现多轮对话和图像目标检测识别功能&#xff0c;在Python中快速搭建自己的大模型完成实际任务。通过详细的步骤解析&#xff0c;介绍了如何申请Gemini API密钥&#xff0c;调用API、对话实现的代码&#xff0c;给出了上传图片识…

5G时代已来:我们该如何迎接超高速网络?

内容概要 随着5G技术的普及&#xff0c;我们的生活似乎变得更加“科幻”了。想象一下&#xff0c;未来的智能家居将不仅仅是能够听你说“开灯”&#xff1b;它们可能会主动询问你今天心情如何&#xff0c;甚至会推荐你一杯“维他命C芒果榨汁”&#xff0c;帮助你抵御夏天的炎热…

算法每日练 -- 双指针篇(持续更新中)

介绍&#xff1a; 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff08;左右指针&#xff09;&#xff0c;一种是快慢指针&#xff08;前后指针&#xff09;。需要注意这里的双指针不是 int* 之类的类型指针&#xff0c;而是使用数组下标模拟地址来进行遍历的方式。 …

理解鸿蒙app 开发中的 context

是什么 Context是应用中对象的上下文&#xff0c;其提供了应用的一些基础信息&#xff0c;例如resourceManager&#xff08;资源管理&#xff09;、applicationInfo&#xff08;当前应用信息&#xff09;、dir&#xff08;应用文件路径&#xff09;、area&#xff08;文件分区…

贝尔不等式,路径积分与AB(Aharonov-Bohm)效应

贝尔不等式、路径积分与Aharonov-Bohm&#xff08;AB&#xff09;效应 这些概念分别源于量子力学不同的理论分支和思想实验&#xff0c;但它们都揭示了量子力学的奇异性质&#xff0c;包括非局域性、相位效应和波粒二象性。以下详细解析每一概念&#xff0c;并探讨其相互联系。…

python 爬虫 入门 六、Selenium

Selenium本来是一个自动测试工具&#xff0c;用于模拟用户对网站进行操作。在爬虫领域也有其用处。 一、下载安装Selenium及附属插件 pip install Selenium 安装完成后还需要安装一个浏览器驱动&#xff0c;来让python能启动浏览器。 如果是Edge或者其他基于Chromium的浏览器…

Linux(CentOS)yum update -y 事故

CentOS版本&#xff1a;CentOS 7 事情经过&#xff1a; 1、安装好CentOS 7&#xff0c;系统自带JDK8&#xff0c;版本为&#xff1a;1.8.0_181 2、安装好JDK17&#xff0c;版本为&#xff1a;17.0.13 3、为了安装MySQL执行了 yum update -y&#xff08;这个时候不知道该命令的…

uniapp uni-calendar日历实现考勤统计功能

根据日历组件代码结构 构成相应结构的状态统计数据 list 再遍历到每日的子组件中 <view class"uni-calendar__weeks-item" v-for"(weeks,weeksIndex) in item" :key"weeksIndex"><calendar-item class"uni-calendar-item--hook&q…

环境配置与搭建

安装pytorch 官网连链接&#xff1a;https://pytorch.org/ 特殊包名 cv2 pip install opencv-python sklearn pip install scikit-learnPIL pip install Pillow使用jupyter notebook pip install jupyter安装显卡驱动 Windows Linux 视频教程&#xff1a; 【ubuntu2…

【数据库实验一】数据库及数据库中表的建立实验

目录 实验1 学习RDBMS的使用和创建数据库 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六、实验结果 七、评价分析及心得体会 实验2 定义表和数据库完整性 一、 实验目的 二、实验内容 三、实验环境 四、实验前准备 五、实验步骤 六…

SpringBoot健身房管理:技术与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

CulturalBench :一个旨在评估大型语言模型在全球不同文化背景下知识掌握情况的基准测试数据集

2024-10-04&#xff0c;为了提升大型语言模型在不同文化背景下的实用性&#xff0c;华盛顿大学、艾伦人工智能研究所等机构联合创建了CulturalBench。这个数据集包含1,227个由人类编写和验证的问题&#xff0c;覆盖了包括被边缘化地区在内的45个全球区域。CulturalBench的推出&…