[Qt][对话框][下]详细讲解

目录

  • 1.Qt内置对话框
    • 0.有哪些
    • 1.消息对话框 QMessageBox
    • 2.颜色对话框 QColorDialog
    • 3.⽂件对话框 QFileDialog
    • 4.字体对话框 QFontDialog
    • 5.输⼊对话框 QInputDialog
    • 6.进度条对话框 QProgressDialog


1.Qt内置对话框

0.有哪些

  • Qt提供了多种可复⽤的对话框类型,即Qt标准对话框,全部继承于QDialog
  • Qt常⽤的内置对话框QFiledialog(⽂件对话框)、QColorDialog(颜⾊对话框)、QFontDialog(字体对话框)、QInputDialog(输⼊对话框)和QMessageBox(消息框)
    请添加图片描述

1.消息对话框 QMessageBox

  • 消息对话框主要⽤于为⽤⼾提⽰重要信息,强制⽤⼾进⾏选择操作

  • QMessageBox类中定义了静态成员函数,可以直接调⽤创建不同⻛格的消息对话框

    • Question():用于正常操作过程中的提问

    • Information():用于报告正常运行信息

    • Warning():用于报告非关键错误

    • Critical():用于报告严重错误

      请添加图片描述

  • QMessageBox中可以设置的按钮类型

    请添加图片描述

  • 自定义按钮可以在QMessageBox充当的角色

    请添加图片描述

  • 示例

    QMessageBox* msgBox = new QMessageBox(this);msgBox->setWindowTitle("标题");
    msgBox->setText("对话框文本");
    msgBox->setIcon(QMessageBox::Information); // 设置消息对话框类型// 标准按钮中(QMessageBox 自己生成的), 根本就没法进行信号槽的连接
    msgBox->setStandardButtons(QMessageBox::Ok | QMessageBox::Save | QMessageBox::Cancel);// 可以通过自定义按钮来连接信号槽
    // msgBox->addButton(button, QMessageBox::AcceptRole);// 对于标准按钮
    // 用户点击按钮,就能通过exec的返回值, 来知道用户点击了哪个按钮
    int result = messageBox->exec();
    if (result == QMessageBox::Ok) {} 
    else if (result == QMessageBox::Save) {} 
    else if (result == QMessageBox::Cancel) {}
    

2.颜色对话框 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)
      
  • 示例

    QColor color = QColorDialog::getColor(QColor(0, 255, 0), this, "选择颜色");char style[1024] = { 0 };
    sprintf(style, "background-color: rgb(%d, %d, %d);", color.red(), color.green(), color.blue());this->setStyleSheet(style);
    

3.⽂件对话框 QFileDialog

  • ⽂件对话框⽤于应⽤程序中需要打开⼀个外部⽂件或需要将当前内容存储到指定的外部⽂件
  • 常用方法:均为静态函数,不需要创建对象即可直接使用
    • 打开文件(一次只能打开一个文件)
      QString getOpenFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
      
    • 打开多个⽂件(⼀次可以打开多个⽂件)
      QStringList getOpenFileNames(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
      
    • 保存⽂件
      QString getSaveFileName(QWidget* parent = nullptr, const QString& caption = QString(), const QString& dir = QString(), const QString& filter = QString(), QString* selectedFilter = nullptr, QFileDialog::Options options = Options())
      
    • 参数说明
      • parent:父亲
      • caption:对话框标题
      • dir:默认打开的路径
      • filter:文件过滤器,限制文件格式
    • 以上方法均是获得了文件名字,打开/保存功能需要额外实现

4.字体对话框 QFontDialog

  • Qt中提供了预定义的字体对话框类QFontDialog,⽤于提供选择字体的对话框部件
  • 静态函数getFont()可以直接调用,不需要创建对象即可直接使用
  • 示例
    bool ok = false;
    QFont font = QFontDialog::getFont(&ok);qDebug() << font.family();
    qDebug() << font.pointSize();
    qDebug() << font.bold();
    qDebug() << font.italic();ui->pushButton->setFont(font);
    

5.输⼊对话框 QInputDialog

  • Qt中提供了预定义的输⼊对话框类QInputDialog,⽤于进⾏临时数据输⼊的场合
  • 常用方法:均为静态函数,不需要创建对象即可直接使用
    • 双精度浮点型输⼊数据对话框
      double getDouble(QWidget* parent, const QString& title, const QString& label, double value = 0, double min = -2147483647, double max = 2147483647, int decimals = 1, bool* ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags())
      
    • 整型输⼊数据对话框
      int getInt(QWidget* parent, const QString& title, const QString& label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, bool* ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags())
      
    • 选择条⽬型输⼊数据框
      QString getItem(QWidget* parent, const QString& title, const QString& label, const QStringList& items, int current = 0, bool editable = true, bool* ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)
      
    • 参数说明
      • parent:父亲
      • title:对话框标题
      • label:对话框标签
      • items:可供选择的条目
  • 示例
    int result = QInputDialog::getInt(this, "整数输入对话框", "请输入一个整数: ");
    double result = QInputDialog::getDouble(this, "浮点数输入对话框", "请输入一个浮点数: ");QStringList items;
    items.push_back("111");
    items.push_back("222");
    items.push_back("333");
    items.push_back("444");
    QString item = QInputDialog::getItem(this, "条目输入对话框", "请输入条目: ", items);
    

6.进度条对话框 QProgressDialog

  • Qt提供了预定义的进度条对话框类QProgressDialog,⽤于显⽰当前进度信息和需要⽤⼾等待的场合
  • 示例
    // 把对话框的初始化逻辑放到了构造函数中.
    dialog = new QProgressDialog(this);
    dialog->setWindowTitle("进度条对话框");
    dialog->setLabelText("当前任务进度为: ");
    dialog->setRange(0, 100);
    dialog->setValue(20);connect(dialog, &QProgressDialog::canceled, this, [=]() {timer->stop();
    });
    

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

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

相关文章

【启明智显技术分享】工业级HMI芯片Model3C/Model3A开发过程中问题记录笔记二

一、Model3C/Model3A芯片介绍 Model3C/Model3A是启明智显针对工业、行业以及车载产品市场推出的一款高性能、低成本的工业级HMI&#xff08;Human-Machine Interface&#xff0c;人机界面&#xff09;芯片。两颗芯片硬件PIN TO PIN&#xff1b;区别在于内置的PSRAM大小不同。该…

百度地图动态绘制台风轨迹

效果图如下: 台风测试数据获取 关键代码: /*** 动态绘制点和线*/drawMakerByAnimate () {const pointsMap = typhoneData.points;const title = typhoneData.tfid + typhoneData.name;if (!pointsMap || pointsMap.length === 0) {return;}if (this.markers.length > 0 &…

Godot《躲避小兵》实战之设置项目

通过之前的学习我们已经基本了解了godot的界面&#xff0c;知道如何创建项目以及节点。那么&#xff0c;从这一章节我们将进入godot官方给我们提供的一个2D游戏开发的小教程进行入手&#xff0c;这个游戏并不是我自己的作品&#xff0c;而是我通过学习完之后&#xff0c;对其进…

C#如何将自己封装的nuget包引入到项目中

问题 自己封装好了一个nuget包&#xff0c;但是不想上传到外网&#xff0c;想局域网使用&#xff0c;有两种方案 搭建私有nuget仓库放到离线文件夹中直接使用 第一种方式请请参考proget安装 下面主要是第二种方式 准备 新建类库项目 using System;namespace ClassLibrary…

数据结构--图(Graph)

定义 图&#xff08;Graph&#xff09;是由顶点的有穷非空集合和顶点之间边的集合组成的一种非线性表结构&#xff0c;通常表示为&#xff1a;G(V,E)&#xff0c;其中&#xff0c;G表示一个图&#xff0c;V是图G中顶点的集合&#xff0c;E是图G中边的集合。 顶点&#xff08;…

阿里云智能大数据演进

本文根据7月24日飞天发布时刻产品发布会、7月5日DataFunCon2024北京站&#xff1a;大数据大模型.双核时代实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;徐晟 阿里云研究员/计算平台产品负责人 主要内容&#xff1a; Overview - 阿里云大数据 AI 产品…

经典算法题总结:数组常用技巧(双指针,二分查找和位运算)篇

双指针 在处理数组和链表相关问题时&#xff0c;双指针技巧是经常用到的&#xff0c;双指针技巧主要分为两类&#xff1a;左右指针和快慢指针。所谓左右指针&#xff0c;就是两个指针相向而行或者相背而行&#xff1b;而所谓快慢指针&#xff0c;就是两个指针同向而行&#xf…

【YOLO5 项目实战】(3)PCB 缺陷检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO5 项目实战】(1)YOLO5 环境配置与测试 【YOLO5 项目实战】(2)使用自己的数据集训练目标检测模型 【YOLO5 项目实战】(3)PCB 缺陷检测 【YOLO5 项目实战】(3)PCB 缺陷检测 1. PCB 缺陷检…

vue-cli 中 配置 productionSourceMap 为 false 失效?

背景 最近 发现 vuecli 构建的 项目中配置的 productionSourceMap 为 false 后 &#xff0c;生产代码 还是能够看到 sourceMap 文件 。 原因 生效前提条件 得设置 NODE_ENV 为 production 才会生效&#xff01; 解决 直接修改生产环境的配置 NODE_ENV 为 production 直接覆…

融资3亿美元——月之暗面:AI大模型领域的新星

月之暗面&#xff0c;这个名字在AI领域引起了不小的震动。作为国内大模型创业企业的佼佼者&#xff0c;月之暗面以其独特的技术优势和商业模式&#xff0c;迅速在激烈的市场竞争中崭露头角。同时以其出色的长文本处理能力和创新的商业模式吸引了众多投资者的目光。 优牛企讯-企…

基于DETR模型实现交通标志检测

交通标志检测在自动驾驶和交通监控中是一个重要的问题。目标检测技术极大地促进了这一过程的自动化。本文实现基于DETR目标检测模型识别交通标志。 Tiny LISA交通标志检测数据集 本文数据集使用Kaggle上提供的Tiny LISA交通标志检测数据集(https://www.kaggle.com/datasets/mm…

手把手教你CNVD漏洞挖掘 + 资产收集

0x1 前言 挖掘CNVD漏洞有时候其实比一般的edusrc还好挖&#xff0c;但是一般要挖证书的话&#xff0c;还是需要花时间的&#xff0c;其中信息收集&#xff0c;公司资产确定等操作需要花费一定时间的。下面就记录下我之前跟一个师傅学习的一个垂直越权成功的CNVD漏洞通杀&#…

MySql 5.7.1 分区的实践

在性能优化中&#xff0c;Mysql 进行分区&#xff0c;能有效提高查询效率&#xff0c;因此开始百度了起来。但是结果总不是那么一番风顺的。如今使用 uuid 作为主键的情况已是主流&#xff0c;因此在给表增加分区时&#xff0c;出现了如下错误&#xff1a; 错误&#xff1a; A …

AI在医学领域:联邦学习 (FL) 在肿瘤学的应用综述

关键词&#xff1a;联邦学习 (Federated Learning, FL)、机器学习 (Machine Learning, ML)、肿瘤学 (Oncology)、数据隐私 (Data Privacy)、精准医疗 (Precision Medicine)、多模态 (Multi-modal) 肿瘤学正在经历快速的变革&#xff0c;这得益于机器学习&#xff08;ML&#xf…

奥德彪视频素材去哪里找?视频素材网站分享

今天我们来聊一聊一个非常实用的话题——视频素材网站推荐&#xff0c;尤其是奥德彪视频素材。这个名词可能对你来说有些陌生&#xff0c;但别担心&#xff0c;跟着我一起探索&#xff0c;你会发现这是一个充满创意与乐趣的旅程。 蛙学网 首先要介绍的是蛙学网。这是一个视频素…

【传知代码】医疗AI:轻量级图像分割新突破(论文复现)

在医学图像领域&#xff0c;精准的图像分割技术一直是提高诊断效率和准确性的关键&#xff0c;然而传统的图像分割方法常常受到计算资源和处理速度的限制&#xff0c;尤其在资源紧张的医疗环境中更是如此。随着人工智能技术的飞速发展&#xff0c;我们迎来了一个激动人心的新时…

PAT--1101.B是A的多少倍

题目描述 算法分析 把数字转为字符串处理&#xff0c;会简化问题 完整代码 #include<bits/stdc.h> //万能头文件 //#include<iostream> //#include<string> //#include <iomanip> // 包含 std::fixed 和 std::setprecision using namespace std;…

PHP汽车保养维修信息管理系统小程序源码

&#x1f697;爱车守护神器&#xff01;揭秘“汽车保养维修信息管理系统”全攻略&#x1f50d; &#x1f525;【开篇揭秘&#xff1a;为何你需要它&#xff1f;】&#x1f525; 在这个快节奏的时代&#xff0c;爱车不仅是代步工具&#xff0c;更是生活品质的象征。但你是否曾…

JUC-变量的线程安全

成员变量和静态变量是否线程安全&#xff1f; 如果它们没有共享&#xff0c;则线程安全&#xff0c;即没有被外部访问。 如果它们被共享了&#xff0c;根据它们的状态是否能够改变&#xff0c;又分两种情况 如果只有读操作&#xff0c;则线程安全 如果有读写操作&#xff0c;…

精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会

2024年7月17日-19日&#xff0c;风丘科技联合德国IPETRONIK亮相日本名古屋汽车工程博览会。该展会面向汽车行业不同应用场景&#xff0c;包括新的eAxle、FCEV、ADAS、测试测量系统和ECU测试等相关技术&#xff0c;是一个专为活跃在汽车行业前线的工程师和研究人员举办的汽车技术…