当前位置: 首页 > news >正文

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&#xff0c;叫灵犀&#xff0c;之前应是自已的LLM模型&#xff0c;只能说是属于“能用&#xff0c;有好过无”&#xff0c;所…...

我用AI做数据分析之数据清洗

我用AI做数据分析之数据清洗 AI与数据分析的融合效果怎样&#xff1f; 这里描述自己在使用AI进行数据分析&#xff08;数据清洗&#xff09;过程中的几个小故事&#xff1a; 1. 变量名的翻译 有一个项目是某医生自己收集的数据&#xff0c;变量名使用的是中文&#xff0c;分…...

一周学会Flask3 Python Web开发-request请求对象与url传参

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili request请求对象封装了从客户端发来的请求报文信息&#xff0c;我们可以从中获取所有数据。 request对象包含的常用属性&…...

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析④】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase04 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月17日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-004测试用例 用例ID测试场景验证要点参考条款预期结果TC…...

网络技术变迁:从IPv4走向IPv6

目录 前言 旧时代产物&#xff1a;IPv4 什么是IPv4&#xff1f; IPv4的工作方式 IPv4的缺点 为什么要从IPv4过渡到IPv6&#xff1f; 走向IPv6&#xff1a;新一代互联网协议 IPv6的技术特性 我们需要过渡技术 双栈&#xff08;Dual Stack&#xff09; 隧道技术&#…...

DeepSeek教unity------事件管理

1. 定义事件类型 定义一个枚举来表示不同类型的事件。组织和识别不同的事件。 2. 创建事件参数类 为了让事件携带数据&#xff0c;创建一个通用的事件参数类或者为每个事件类型创建特定的参数类。 3. 实现事件管理器 创建一个EventManager类&#xff0c;用于管理事件的注册…...

确保设备始终处于最佳运行状态,延长设备的使用寿命,保障系统的稳定运行的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约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】

有时候我也想听听&#xff0c;我在你心里&#xff0c;是什么样子 —— 25.1.12 一、什么是语言模型 语言是灵活的&#xff0c;也是有规律的 了解一门语言的人可以判断一句话是否“合理” 通俗来讲&#xff0c;语言模型用来评价一句话(句子可以看作是字的组合)是否“合理”或…...

刚性平衡机建模

这两个公式是动平衡机中用于描述旋转部件振动行为的动力学方程。它们分别描述了旋转部件在平移振动和扭转振动中的运动规律&#xff0c;用于分析不平衡量对系统的影响。以下是详细解释&#xff1a; 1. 第一个公式&#xff1a;平移振动的动力学方程 M d 2 y d t 2 2 K y 0 m 1…...

【算法】双指针(上)

目录 双指针 左右指针(对撞指针) 快慢指针 移动零 双指针解题 复写零 暴力解题 双指针解题(快慢指针) 快乐数 双指针解题(快慢指针) 盛最多水的容器 暴力解题(会超时) 双指针解题(左右指针) 有效三角形的个数 暴力解题 双指针解题(左右指针) 双指针 常见的双指…...

【Linux Redis】关于用docker拉取Redis后,让虚拟机运行起来redis,并使得其可以连接到虚拟机外的navicat。

步骤一&#xff1a;拉取Redis镜像 docker pull redis 这个命令会下载最新版本的Redis镜像到你的本地Docker仓库中。你也可以指定一个具体的版本号&#xff0c;例如docker pull redis:6.2.6&#xff0c;来拉取特定版本的Redis镜像。 如果拉取遇到问题请参考【Linux AnolisOS】关…...

用deepseek学大模型04-模型可视化与数据可视化

deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中&#xff0c;可视化神经网络结构的常用工具和方法有以下几种&#xff0c;以下将详细介绍它们的用法&#xff1a; 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...

一周学会Flask3 Python Web开发-post请求与参数获取

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili app.route 装饰器默认只支持get请求。假如我们要让绑定的视图函数支持其他请求方式&#xff0c;我们可以在methods属性里配置…...

第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入

3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述&#xff0c;总结一下就是&#xff1a;软件设计模式中有一种叫做【控制反转】的设计模式&#xff0c;而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入&#xff0c;是学习怎样实现控…...

cs*n 网页内容转为html 加入 onenote

csdn上有好用的内容&#xff0c;我们怎么将它们加到 onenote 里吃灰呢。 一、创建 新html create_html.py import sysdef create_html_file(filename):# 检查是否提供了文件名if not filename:print("请提供HTML文件名")return# 创建HTML内容html_content f"…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...

RLHF vs RLVR:对齐学习中的两种强化方式详解

在语言模型对齐&#xff08;alignment&#xff09;中&#xff0c;强化学习&#xff08;RL&#xff09;是一种重要的策略。而其中两种典型形式——RLHF&#xff08;Reinforcement Learning with Human Feedback&#xff09; 与 RLVR&#xff08;Reinforcement Learning with Ver…...

数据可视化交互

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装 pyecharts 二、下载数据 三、实验任务 实验 1&#xff1a;AQI 横向对比条形图 代码说明&#xff1a; 运行结果&#xff1a; 实验 2&#xff1a;AQI 等级分布饼图 实验 3&#xff1a;多城市 AQI…...