QT--常用对话框
文章目录
- 前言
- 一、颜色对话框
- 颜色对话框代码解析
- 二、文本对话框
- 文本对话框代码解析
- 三、输入对话框
- 1.整型输入对话框
- 2.浮点数输入对话框
- 3.条目对话框
- 四、提示对话框
- 1.提问对话框
- 2.消息对话框
- 3.警告对话框
- 4.关键对话框
- 五、进度对话框
- 六、向导对话框
- 总结
前言
今天介绍几种标准对话框,都是Qt封装好的,我们先创建一个界面,添加几个按钮,然后分别在几个按钮的回调函数里添加创建不同对话框的逻辑

一、颜色对话框
void MainWindow::on_pushButton_clicked()
{QColorDialog colordlg(Qt::blue,this);//颜色 父本colordlg.setOption(QColorDialog::ShowAlphaChannel);colordlg.exec();//模态对话框 阻塞在这QColor color=colordlg.currentColor();//返回当前颜色qDebug()<<"color is "<<color<<Qt::endl;
}
颜色对话框代码解析
以上代码实现了函数部分
QColorDialog:一个用于让用户选择颜色的对话框
setOption:这是一个方法,用于设置对话框的显示选项。
ShowAlphaChannel:这是一个选项,启用后会在对话框中显示透明度调节控件。
QColorDialog::setOption(QColorDialog::ShowAlphaChannel) 的作用是启用颜色对话框中的Alpha通道设置,允许用户调整颜色的透明度。通过设置这个选项,颜色对话框会显示一个滑块或其他控件,让用户能够调节颜色的透明度级别。这对于需要精确控制颜色透明度的应用场景非常重要,例如在设计图形界面或需要半透明效果的地方。

二、文本对话框
void MainWindow::on_pushButton_2_clicked()
{QString path=QDir::currentPath();//要打开的文件的地址 就用当前的地址QString title="文本对话框";//生成的这个框左上角的名字QString filter = tr("文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)");//filter是一个过滤器QString aFileName=QFileDialog::getOpenFileName(this,title,path,filter);qDebug() << aFileName << Qt::endl;
}
文本对话框代码解析
QDir::currentPath() 返回当前工作目录的路径
QString title 变量保存了对话框的标题文字,当对话框弹出时,标题栏会显示“文本对话框”
QString filter 变量定义了文件对话框中显示的文件类型过滤器。
tr() 函数用于国际化支持,将字符串翻译成当前语言环境下的文字。虽然在这个例子中没有实际变化,但它使代码更具扩展性。
分号 ;; 用于分隔不同的过滤器项。
每个过滤器项由描述和模式组成,例如:
“文本文件(.txt)":显示“文本文件”并仅列出 .txt 文件。
"图片文件(.jpg .gif .png)":显示“图片文件”并列出 .jpg, .gif, 和 .png 文件。
"所有文件(.)”:显示“所有文件”并列出所有类型的文件。
QFileDialog::getOpenFileName 是一个静态方法,用于显示一个标准的打开文件对话框

三、输入对话框
1.整型输入对话框
void MainWindow::on_pushButton_3_clicked()
{bool falg=false;auto intdata=QInputDialog::getInt(this,tr("整型输入"),tr("请输入"),200,0,400,1,&falg);if(falg){qDebug() << intdata << Qt::endl;}
}

2.浮点数输入对话框
void MainWindow::on_pushButton_4_clicked()
{bool falg=false;auto doubledata=QInputDialog::getDouble(this,tr("浮点数输入"),tr("请输入"),0.1,-2,4,1,&falg);if(falg){qDebug() << doubledata << Qt::endl;}
}

3.条目对话框
void MainWindow::on_pushButton_5_clicked()
{bool flag=false;QStringList items;items<<"条目1"<<"条目2";//创建一个个条目auto itemdata=QInputDialog::getItem(this,tr("条目对话框"),tr("请选择"),items,1,true,&flag);if(flag){qDebug() << itemdata << Qt::endl;}
}

四、提示对话框
1.提问对话框
QMessageBox::question(this,tr("提示对话框"),tr("你是单身狗吗?"));//默认有两个按键Yes No

2.消息对话框
QMessageBox::information(this,tr("提示对话框"),tr("请赶紧学习!"),QMessageBox::Yes);

3.警告对话框
QMessageBox::warning(this,tr("警告对话框"),tr("你最好找个地方发泄一下"),QMessageBox::Ok);

4.关键对话框
QMessageBox::critical(this,tr("关键提示对话框"), tr("我梦寐以求是真爱和自由"),QMessageBox::Ok);

五、进度对话框
当我们复制或进行文件传输时,会显示一个进度条的对话框,我们可以使用QProcessDialog来操作
void MainWindow::on_pushButton_7_clicked()
{_progressdialog=new QProgressDialog(tr("文件复制中"),tr("取消复制"),0,5000,this);_progressdialog->setWindowTitle("文件复制框");_progressdialog->setWindowModality(Qt::ApplicationModal);//设置为全局模态//设置定时器_qtimer=new QTimer(this);//时间到了就更新connect(_qtimer,&QTimer::timeout,this,&MainWindow::on_updateProgressDialog);connect(_progressdialog,&QProgressDialog::canceled,this,&MainWindow::on_cancelProgressDialog)_qtimer->start(2);//每2毫秒开始一次}void MainWindow::on_updateProgressDialog()//窗口的更新
{_count++;if(_count>5000){_qtimer->stop();//停止delete _qtimer;_qtimer=nullptr;delete _progressdialog;_progressdialog=nullptr;_count=0;return;}_progressdialog->setValue(_count);
}void MainWindow::on_cancelProgressDialog()
{_qtimer->stop();delete _qtimer;_qtimer = nullptr;delete _progressdialog;_progressdialog= nullptr;_count = 0;return;}
我们首先创建一个按键,然后构造这个槽函数on_pushButton_7_clicked()
当点击按键时进入这个槽函数,这里的 _progressdialog是QProgressDialog类型,我把他写成了指针当作类MainWindow的类对象,所以这里就直接new就行(如果直接用对象的方式创建的话一定要绑定父窗口)下面那个_qtimer我也在MainWindow中的对象里面添加了,
_count相当于进度条,如果满了5000,就退出窗口,定时器和窗口都是new出来的,所以要手动delete
下面这个函数on_cancelProgressDialog()是因为打开窗口会有一个取消的按钮,我们为了点击取消可以关闭窗口就写了这个函数

六、向导对话框
当我们想引导用户操作时可以采用向导对话框,比如安装软件时就会根据向导对话框一步一步操作,我们也实现一个向导对话框
我先写一部分供大家看看
void MainWindow::on_pushButton_8_clicked()
{QWizard wizar(this);wizar.setWindowTitle(tr("全城热恋"));auto page1=new QWizardPage();page1->setTitle(tr("婚恋介绍引导程序"));auto label1=new QLabel();label1->setText(tr("该程序帮助您找到人生伴侣"));auto layout=new QVBoxLayout();layout->addWidget(label1);page1->setLayout(layout);wizar.addPage(page1);wizar.show();wizar.exec();
}
QWizard是向导对话框
QWizardPage是向导对话框中的每一页的页面
QLabel是标签 上面可以输入文字
QVBoxLayout是垂直布局
流程就是新开一页,写页名,然后写标签,标签和页面放入布局中,然后再总体加入这个wizar向导中
给你们看看这一页的演示效果,再对着代码分析

接下来我们继续完成全部内容
总体代码如下
void MainWindow::on_pushButton_8_clicked()
{//第一页-----------------------------QWizard wizar(this);wizar.setWindowTitle(tr("全城热恋"));auto page1=new QWizardPage();page1->setTitle(tr("婚恋介绍引导程序"));auto label1=new QLabel();label1->setText(tr("该程序帮助您找到人生伴侣"));auto layout=new QVBoxLayout();layout->addWidget(label1);page1->setLayout(layout);wizar.addPage(page1);//第二页------------------------------QWizardPage * page2=new QWizardPage();page2->setTitle(tr("选择心动类型"));auto group=new QButtonGroup(page2);//将按钮组父亲设置到第二页上//创建第一个按钮 添加名字 放入按钮组中auto btn1=new QRadioButton;btn1->setText(tr("白富美"));group->addButton(btn1);//创建第二个按钮 添加名字 放入按钮组中auto btn2=new QRadioButton;btn2->setText(tr("萝莉"));group->addButton(btn2);auto btn3=new QRadioButton;btn3->setText(tr("御姐"));group->addButton(btn3);auto btn4=new QRadioButton;btn4->setText(tr("清纯少女"));group->addButton(btn4);auto btn5=new QRadioButton;btn5->setText(tr("女汉子"));group->addButton(btn5);auto btn6=new QRadioButton;btn6->setText(tr("成年人不做选择!我全要!"));group->addButton(btn6);auto layout2=new QVBoxLayout();for(int i=0;i<group->buttons().size();i++){layout2->addWidget(group->buttons()[i]);}page2->setLayout(layout2);wizar.addPage(page2);//第三页----------------------------------QWizardPage * page3=new QWizardPage();page3->setTitle(tr("你的缘分即将到来"));auto label3=new QLabel();label3->setText("感谢您的参与,接下来的一个月会遇到对的人!");QVBoxLayout * layout3=new QVBoxLayout();layout3->addWidget(label3);//标签放入布局page3->setLayout(layout3);//布局放入页面wizar.addPage(page3);wizar.show();wizar.exec();
}
内容展示



总结
在调用这些对话框的时候不需要死记硬背,传参的时候多查看文档即可
函数内参数是什么不需要记,忘记了就查看文档,多用就会了
基础对话框基本上就是以上这些了,在实际开发中99%的也是这些,和在这些的基础上进行变换!!!!!!!!!!!!!!!!!!!!!!
相关文章:
QT--常用对话框
文章目录 前言一、颜色对话框颜色对话框代码解析 二、文本对话框文本对话框代码解析 三、输入对话框1.整型输入对话框2.浮点数输入对话框3.条目对话框 四、提示对话框1.提问对话框2.消息对话框3.警告对话框4.关键对话框 五、进度对话框六、向导对话框总结 前言 今天介绍几种标…...
基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例
简简单单 Online zuozuo :本心、输入输出、结果 文章目录 基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例前言下载 Ollama实际部署所需的硬件要求设置 LLM 使用 GPU ,发挥 100% GPU 性能Ollama 大模型管理命令大模型的实际运行资源消耗基于 Ollam…...
图的最小生成树算法: Prim算法和Kruskal算法(C++)
上一节我们学习了最短路径算法, 这一节来学习最小生成树. 最小生成树(Minimum Spanning Tree, MST)算法是图论中的一种重要算法, 主要用于在加权无向图中找到一棵生成树, 使得这棵树包含图中的所有顶点, 并且所有边的权重之和最小. 这样的树被称为最小生成树. 最小生成树广泛应…...
WPS的AI助手进化跟踪(灵犀+插件)
Ver V0.0 250216: 如何给WPS安装插件用以支持其他大模型LLM V0.1 250217: WPS的灵犀AI现在是DeepSeek R1(可能是全参数671B) 前言 WPS也有内置的AI,叫灵犀,之前应是自已的LLM模型,只能说是属于“能用,有好过无”,所…...
我用AI做数据分析之数据清洗
我用AI做数据分析之数据清洗 AI与数据分析的融合效果怎样? 这里描述自己在使用AI进行数据分析(数据清洗)过程中的几个小故事: 1. 变量名的翻译 有一个项目是某医生自己收集的数据,变量名使用的是中文,分…...
一周学会Flask3 Python Web开发-request请求对象与url传参
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili request请求对象封装了从客户端发来的请求报文信息,我们可以从中获取所有数据。 request对象包含的常用属性&…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析④】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase04 作者:车端域控测试工程师 更新日期:2025年02月17日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-004测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
网络技术变迁:从IPv4走向IPv6
目录 前言 旧时代产物:IPv4 什么是IPv4? IPv4的工作方式 IPv4的缺点 为什么要从IPv4过渡到IPv6? 走向IPv6:新一代互联网协议 IPv6的技术特性 我们需要过渡技术 双栈(Dual Stack) 隧道技术&#…...
DeepSeek教unity------事件管理
1. 定义事件类型 定义一个枚举来表示不同类型的事件。组织和识别不同的事件。 2. 创建事件参数类 为了让事件携带数据,创建一个通用的事件参数类或者为每个事件类型创建特定的参数类。 3. 实现事件管理器 创建一个EventManager类,用于管理事件的注册…...
确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了
智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。通过计算机视觉和…...
RedisTemplate存储含有特殊字符解决
ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…...
28、深度学习-自学之路-NLP自然语言处理-做一个完形填空,让机器学习更多的内容程序展示
import sys,random,math from collections import Counter import numpy as npnp.random.seed(1) random.seed(1) f open(reviews.txt) raw_reviews f.readlines() f.close()tokens list(map(lambda x:(x.split(" ")),raw_reviews))#wordcnt Counter() 这行代码的…...
【NLP 22、语言模型 language model】
有时候我也想听听,我在你心里,是什么样子 —— 25.1.12 一、什么是语言模型 语言是灵活的,也是有规律的 了解一门语言的人可以判断一句话是否“合理” 通俗来讲,语言模型用来评价一句话(句子可以看作是字的组合)是否“合理”或…...
刚性平衡机建模
这两个公式是动平衡机中用于描述旋转部件振动行为的动力学方程。它们分别描述了旋转部件在平移振动和扭转振动中的运动规律,用于分析不平衡量对系统的影响。以下是详细解释: 1. 第一个公式:平移振动的动力学方程 M d 2 y d t 2 2 K y 0 m 1…...
【算法】双指针(上)
目录 双指针 左右指针(对撞指针) 快慢指针 移动零 双指针解题 复写零 暴力解题 双指针解题(快慢指针) 快乐数 双指针解题(快慢指针) 盛最多水的容器 暴力解题(会超时) 双指针解题(左右指针) 有效三角形的个数 暴力解题 双指针解题(左右指针) 双指针 常见的双指…...
【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。
步骤一:拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号,例如docker pull redis:6.2.6,来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...
用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...
一周学会Flask3 Python Web开发-post请求与参数获取
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式,我们可以在methods属性里配置…...
第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入
3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述,总结一下就是:软件设计模式中有一种叫做【控制反转】的设计模式,而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入,是学习怎样实现控…...
cs*n 网页内容转为html 加入 onenote
csdn上有好用的内容,我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
