首页/新闻资讯/正文详情

Qt窗口:对话框

发布时间:2026/11/5 6:52:32 来源:云帆数科 栏目:资讯中心
Qt窗口:对话框
对话框介绍对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口出现在程序最上层用于实现短期任务或者简洁的用户交互。Qt常用的内置对话框有QFiledialog文件对话框、QColorDialog颜色对话框、QFontDialog字体对话框、QInputDialog输入对话框和QMessageBox消息框。对话框的分类对话框分为模态对话框和非模态对话框。模态对话框模态对话框指的是显示后无法与父窗口进行交互是一种阻塞式的对话框。使用QDialog::exec()函数调用。模态对话框适用于必须依赖用户选择的场合比如消息显示文件选择打印设置等。示例1、新建Qt项目在ui文件中的菜单栏中设置两个菜单文件 和 编辑在菜单文件下新建菜单项创建 并将菜单项新建置于工具栏中如下图示2、在mainwindow.cpp文件中实现当点击新建时弹出一个模态对话框 说明在菜单项中点击菜单项时就会触发triggered()信号。//当点击“新建”时弹出一个模态对话框 在菜单项中当点击之后就会触发triggered信号 connect(ui-actionnew,QAction::triggered,[](){ QDialog dlg(this); dlg.resize(200,100); dlg.exec(); });非模态对话框非模态对话框显示后独立存在可以同时与父窗口进行交互是一种非阻塞式对话框使用QDialog::show()函数调用。非模态对话框一般在堆上创建这是因为如果创建在栈上时弹出的非模态对话框就会一闪而过。同时还需要设置Qt::WA_DeleteOnClose属性目的是当创建多个非模态对话框时如打开了多个非模态窗口为了避免内存泄漏要设置此属性。非模态对话框适用于特殊功能设置的场合比如查找操作属性设置等。connect(ui-actionnew,QAction::triggered,[](){ //非模态对话框 为了防止一闪而过创建在堆区 QDialog *dlg new QDialog(this); dlg-resize(200,100); //调整非模态对话框尺寸 /* 当dlg无限创建时即一直不断的打开关闭窗口 设置下面这个属性就可以在关闭非模态对话框时释放这个对象 */ dlg-setAttribute(Qt::WA_DeleteOnClose); dlg-show(); });混合属性对话框混合属性对话框同时具有模态对话框和非模态对话框的属性对话框的生成和销毁具有非模态对话框属性功能上具有模态对话框的属性。使用 QDialog::setModal() 函数可以创建混合特性的对话框。通常创建对话框时需要指定对话框的父组件。 示例connect(actionW,QAction::triggered,[](){ QDialog* dialognew QDialog(); dialog-setAttribute(Qt::WA_DeleteOnClose);// 属性关闭时候销毁 dialog-setModal(true);// 设置成模态 dialog-resize(300,400); dialog-show(); qDebug()show子窗口弹出后显示; }); connect(actionS,QAction::triggered,[](){ QDialog* dialognew QDialog(); dialog-setAttribute(Qt::WA_DeleteOnClose); dialog-resize(300,400); dialog-exec(); qDebug()exec窗口关闭后显示; });总结模态对话框exec会阻塞显示代码不再向后执行且不允许操作父窗口非模态对话框show非阻塞显示代码继续向后执行允许操作父窗口混合属性对话框show非阻塞显示代码继续向后执行不允许操作父窗口setModel(true)设置成模态Qt 内置对话框Qt 提供了多种可复用的对话框类型即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。常用标准对话框如下消息对话框 QMessageBox消息对话框是应用程序中最常用的界面元素。消息对话框主要用于为用户提示重要信息强制用户进行选择操作。 QMessageBox类 中定义了静态成员函数可以直接调用创建不同风格的消息对话框其中包括类型说明Question用于正常操作过程中的提问Information用于报告正常运行信息Warning用于报告非关键错误Critical用于报告严重错误其对应的函数原型如下示例1问题提示消息对话框#include mainwindow.h #include QMessageBox #include QPushButton MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { resize(800,600); QPushButton *btn new QPushButton(消息对话框,this); QMessageBox *msg new QMessageBox(this); msg-setWindowTitle(Warning Message); //设置消息对话框的标题 msg-setText(Error Message!); //设置消息对话框的内容 msg-setIcon(QMessageBox::Question); //设置消息对话框类型 msg-setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); //在消息对话框上设置按钮 connect(btn,QPushButton::clicked,[](){ msg-show(); }); }其中可以设置的按钮的类型如下使用静态方法使用静态方法就不用一个一个设置了QMessageBox::information(parent, title, text);// 提示 QMessageBox::warning(parent, title, text);// 警告 QMessageBox::critical(parent, title, text);// 错误 QMessageBox::question(parent, title, text);// 问题void MainWindow::on_pushButton_clicked() { int resultQMessageBox::information( this, 对话框标题, 对话框文本, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel //默认按钮 ); if(resultQMessageBox::Ok) qDebug()Ok; else if(resultQMessageBox::Cancel) qDebug()Cancel; }颜色对话框 QColorDialog颜色对话框的功能是允许用户选择颜色。继承自 QDialog 类。颜色对话框如下图示常用方法介绍//创建对象的同时设置父对象 QColorDialog(QWidget *parent nullptr) //创建对象的同时通过QColor对象设置默认颜色和父对象 QColorDialog(const QColor initial, QWidget *parent nullptr) //设置当前颜色对话框 void setCurrentColor(const QColor color) //获取当前颜色对话框 QColor currentColor() const //打开颜色选择对话框并返回一个QColor对象 QColor getColor(const QColor initial Qt::white, QWidget *parent nullptr, const QString title QString(), QColorDialog::ColorDialogOptions options ColorDialogOptions()) //打开颜色对话框 void open(QObject *receiver, const char *member)getColor 参数说明initial设置默认颜色parent设置父对象title设置对话框标题options设置选项示例1设置默认颜色并打印选择颜色#include mainwindow.h #include QPushButton #include QColorDialog #include QDebug MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { resize(800,600); QPushButton *btn new QPushButton(颜色对话框,this); //创建颜色对话框 QColorDialog *cdlg new QColorDialog(this); connect(btn,QPushButton::clicked,[](){ //打开颜色对话框 并设置默认颜色为红色 QColor color cdlg-getColor(QColor(255,0,0)); qDebug() r color.red(); qDebug() g color.green(); qDebug() b color.blue(); }); }

相关推荐

UE5魂系游戏开发教程06 - 翻滚
UE5魂系游戏开发教程06 - 翻滚

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 6:52:32

月薪11万+!程序员如何抓住大模型红利,收藏这份高薪转型指南?
月薪11万+!程序员如何抓住大模型红利,收藏这份高薪转型指南?

大模型技术爆发,AI岗位薪资飙升,程序员迎来黄金期。 最近一张月薪11万的工资条,在程序员圈子里炸开了锅。 原来是一个字节员工从传统开发岗成功转岗到大模型应用开发岗,薪资直接飙升到让人眼红的高度,评论区网友满屏的… · 2026/11/5 6:51:32

VHMC老马基因记忆链:人形机器人会沉淀动作经验,学会重复完成任务 系列:人形机器人大脑体系 · 产品篇 1/3
VHMC老马基因记忆链:人形机器人会沉淀动作经验,学会重复完成任务 系列:人形机器人大脑体系 · 产品篇 1/3

VHMC老马基因记忆链:人形机器人会沉淀动作经验,学会重复完成任务 系列:人形机器人大脑体系 产品篇 1/3 字数:约 4900 字(2026-11-02 增补 6.3 节「记忆链在闭环里的位置」) 获取与部署 ⚠️ 重要说明:软件包托管于我方阿里云 ECS 静态服务节点,链接为配套文章专属访… · 2026/11/5 6:51:32

ADS122U04与STM32F410RB工业温度采集方案:UART接口ADC实战详解
ADS122U04与STM32F410RB工业温度采集方案:UART接口ADC实战详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

ADS122U04IPWR + PIC18F66K40:PT100/NTC高精度温度采集方案解析
ADS122U04IPWR + PIC18F66K40:PT100/NTC高精度温度采集方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

Figma设计稿转LVGL嵌入式UI:自动化链路与工程实践
Figma设计稿转LVGL嵌入式UI:自动化链路与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

ADS122U04IPWR+PIC18F56K42实现0.1℃工业温度测量
ADS122U04IPWR+PIC18F56K42实现0.1℃工业温度测量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

工业温度测量信号链设计:ADS122U04与PIC18F57Q43实战
工业温度测量信号链设计:ADS122U04与PIC18F57Q43实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44

1km人口分布栅格数据处理:口径、裁剪与时间序列分析
1km人口分布栅格数据处理:口径、裁剪与时间序列分析

去年帮一位做城市扩张研究的朋友处理人口栅格,他拿到一份 2000—2023 年的 1km 精度人口分布栅格数据,第一件事就是把研究区内的像元值全部加总,想直接得到总人口曲线。结果算出来的数比公开统计口径少了将近三成,他一度以为是数据… · 2026/11/5 7:34:44

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码