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

news2024/12/25 12:52:48

目录

  • 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.coloradmin.cn/o/2036381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

媒体邀约新闻稿宣发的意义和作用?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体邀约新闻稿的宣发对于企业活动来说具有重要的意义和作用。这不仅能够提升企业的知名度和形象&#xff0c;还能扩大活动的影响力&#xff0c;增加媒体报道的机会&#xff0c;并建立积…

【基础解读】神奇宝贝多分类——Classification:Probabilistic Generative Model

背景 问题定义 尝试用Regression的方法解决Classification 尝试用概率的方式解决Classification 求一个个体被选中并来自于某一类的概率——贝叶斯 进行Classification 结果分析 模型调整——共用convariance matrix 结果分析 总结

Unity动画模块 之 简单创建一个序列帧动画

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​ 1.什么是序列帧动画 序列帧动画简单来讲就是通过连续播放一系列静态图像&#xff0c;形成动态视觉效果的过程&#xff…

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

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

Linux-软件管理

文章目录 19. 软件管理19.1 linux软件介绍19.2 RPM包概述19.3 RPM软件包安装19.4 RPM软件包依赖问题19.5 DPKG软件包19.6 linux 软件包前端工具19.7 windows 前端工具winget19.8 linux 前端工具yum概述19.9 设置yum远程仓库19.10 yum 软件包管理19.11 epel软件仓库19.12 yum本地…

机器学习中的距离概念

距离在机器学习中应用广泛&#xff0c;包括欧式距离、曼哈顿距离、内积距离和KL距离。 下面总结一下。 机器学习中的距离 欧式距离曼哈顿距离内积距离KL距离距离作为损失函数(MSE/MAE...)欧式距离与内积距离的联系☆距离的有效性 欧式距离 欧式距离&#xff08;Euclidean Dis…

数学建模——评价决策类算法Python版(灰色关联分析、主成分分析)

一、灰色关联分析 模型原理 解题步骤 例题 某公司考虑在几个候选城市中开设新的零售店。公司收集了以下数据&#xff0c;包括候选城市的GDP、人口、交通便利程度、商业发展水平等指标。公司希望使用灰色关联分析法来评估这些指标与零售店成功可能性之间的关系&#xff0c;以…

sql注入绕过+rce

目录 1、mysql编码绕过 1.1、环境搭建 1.1.1、源码 1.1.2、数据库 1.1.3、检测环境 1.2、绕过技巧 1.2.1、直接使用admin&#xff0c;查询数据&#xff0c;发现权限被拒绝 1.2.2、加上单引号绕过了&#xff0c;但是查询不到数据 1.2.3、试试其他特殊字符&#xff0c;发…

python循环——九九乘法表(更加轻松的理解循环结构)

感受 首先&#xff0c;得明确意识到这个问题&#xff0c;就是我的循环结构学的一塌糊涂&#xff0c;完全不能很好的使用这个循环来实现各种九九乘法表达输出&#xff0c;这样的循环结构太差了&#xff0c;还需要我自己找时间来补充一下循环的使用&#xff0c;来拓宽自己的思考方…

【开端】Java 分页工具类运用

一、绪论 Java系统中&#xff0c;分页查询的场景随处可见&#xff0c;本节介com.baomidou.mybatisplus.core.metadata.IPage;来分页的工具类 二、分页工具类 public class PageUtils implements Serializable { private static final long serialVersionUID 1L; /**…

服务器安装哪吒面板详细教程

本文长期更新地址&#xff1a; 服务器安装哪吒面板详细教程-星零岁的博客https://blog.0xwl.com/13568.html 注&#xff1a;本文中部分内容源自网络&#xff0c;第四步中部分来自本人曾经文章&#xff1a;云服务器安装配置宝塔面板并安装基础运行环境教程-星零岁的博客 今天来讲…

Dubbo 快速掌握 这篇就够了

1. Dubbo概述 Dubbo 是一款高性能、轻量级的开源Java RPC框架&#xff0c;由阿里巴巴公司开发并在2011年开源。它主要用于解决分布式系统中服务之间的通信问题&#xff0c;支持多种协议&#xff0c;如Dubbo、HTTP、Hessian等&#xff0c;具有服务注册、服务发现、负载均衡、故…

基于大语言模型抽取文本中的实体和关系

在基于大语言模型图数据库存储中&#xff0c;要从文本中提取实体&#xff0c;实体属性和关系。 实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。 该任务的输入是一句话&#xff0c;输出是一个spo三元组&#xff08;subject-predicate-object&#xff…

【数据结构】TreeMap和TreeSet

目录 前言TreeMap实现的接口内部类常用方法 TreeSet实现的接口常用方法 前言 Map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 一般把搜索的数据称为关键字&#xff08;Key&#xff09;&#xff0c; 和关键字对应的称为…

【C#】知识汇总

目录 1 概述1.1 GC&#xff08;Garbage Collection&#xff09;1.1.1 为什么需要GC&#xff1f;1.1.2 GC的工作原理工作原理什么是Root&#xff1f;GC算法&#xff1a;Mark-Compact 标记压缩算法GC优化&#xff1a;Generational 分代算法 1.1.3 GC的触发时间1.1.4 如何减少垃圾…

MFC核心技术探索

原文地址&#xff1a;李浩的博客 lihaohello.top 本文采用逐步调试的方法&#xff0c;带你一起探索MFC程序的执行流程、窗体创建、消息映射、运行时类型识别、对象动态创建这些核心机制。 相信读者在深入理解这些核心机制后&#xff0c;会由衷感叹于MFC框架实现的精妙&#xf…

Outh2四种授权模式详解

1.oauth 2.0 简介 2.各个角色介绍 3.四种模式 4.授权码模式 ①&#xff1a;获取授权码 ②&#xff1a;申请授权接口 ③&#xff1a;申请token ④&#xff1a;申请token接口 5.简单模式 6.密码模式 7.客户端模式

StarRocks 存算分离 Data Cache 二三事

前言 StarRocks 存算分离模式架构中&#xff0c;数据导入后&#xff0c;会被写入远端对象存储。而对象存储由于其访问延迟较高特性&#xff0c;如果没有任何优化&#xff0c;每次查询直接访问后端对象存储&#xff0c;那么性能就会变得非常差&#xff0c;也就失去了 StarRocks…

【C#】一个项目移动了位置,或者换到其他电脑上,编译报错 Files 的值“IGEF,解决方法

文章目录 1 问题分析2 本文解决方法 一个项目可以正常运行编译的项目&#xff0c;所有路径均为相对路径。 移动了位置&#xff0c;或者换到其他电脑上&#xff0c;编译报错 Files 的值“IGEF&#xff0c; 1 问题分析 这个错误信息表明在处理文件时&#xff0c;Files 的值出…

tiktok 搜索接口请求与翻页

这几天有小伙伴问tk的搜索接口的问题, 一个是搜索热门接口请求返回 {“status_code”: 0},这个使用curl_cffi的requests库改一下指纹请求就行了。 再一个就是翻页问题 细心一些比对一下翻页参数都能做到的(小伙伴以为只改个offset就完事了) 要不然你只能得到这样的结果:…