Qt (QFileDialogQColorDialogQFontDialog) 对话框实战
目录
一、QFileDialog 类 (文件对话框)
二、QColorDialog 类(颜色对话框)
三、QFontDialog 类(字体对话框类)
一、QFileDialog 类 (文件对话框)
QFileDialog 是 Qt 框架中的一个类,用于在应用程序中提供文件对话框。它允许用户选择文件或目录,并且可以指定对话框的标题、路径、过滤器以及其他选项。
QFileDialog 类的方法可以使用静态方法调用,因此无需创建对象。该类提供了很多方法,包括:
- getOpenFileName():获取单个文件的完整路径。
- getOpenFileNames():获取多个文件的完整路径。
- getSaveFileName():获取保存文件的完整路径。
- getExistingDirectory():获取现有目录的路径。
此外,还提供了一些选项来控制对话框的行为和样式,例如指定默认文件名、显示隐藏文件和目录、添加可选的文件类型过滤器等等。
QFileDialog 的使用非常简单,只需要调用所需的方法并传递所需的参数和选项即可。可以将返回值用于加载文件或目录路径。
案例分析:实现下图功能

代码示例:
qfiledialogtest.h
#ifndef QFILEDIALOGTEST_H
#define QFILEDIALOGTEST_H#include <QDialog>#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout> // 水平布局
#include <QVBoxLayout> // 垂直布局#include <QFileDialog>class QFileDialogTest : public QDialog
{Q_OBJECTpublic:QFileDialogTest(QWidget *parent = nullptr);~QFileDialogTest();private:QLabel *FileNameLabel;QLineEdit *FileNameLineEdit;QPushButton *FileButton;QLabel *FileSizeLabel;QLineEdit *FileSizeLabelLineEdit;QPushButton *GetFileInfoButton;private slots:void GetFileInfoFunc(); // 用于打开文件void GetFileSizeFunc(); // 用于获取文件大小};
#endif // QFILEDIALOGTEST_H
main.cpp
#include "qfiledialogtest.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);QFileDialogTest w;w.show();return a.exec();
}
qfiledialogtest.cpp
#include "qfiledialogtest.h"QFileDialogTest::QFileDialogTest(QWidget *parent): QDialog(parent)
{setWindowTitle("文件对话框测试");// 1:创建控件FileNameLabel=new QLabel("文件名称:");FileNameLineEdit=new QLineEdit;FileButton=new QPushButton("选择...");FileSizeLabel=new QLabel("文件大小:");FileSizeLabelLineEdit=new QLineEdit;GetFileInfoButton=new QPushButton("获取文件大小信息");// 2:排列布局QGridLayout *glayout=new QGridLayout;glayout->addWidget(FileNameLabel,0,0);glayout->addWidget(FileNameLineEdit,0,1);glayout->addWidget(FileButton,0,2);glayout->addWidget(FileSizeLabel,1,0);glayout->addWidget(FileSizeLabelLineEdit,1,1,1,2);QHBoxLayout *hlayout=new QHBoxLayout;hlayout->addWidget(GetFileInfoButton);QVBoxLayout *vlayout=new QVBoxLayout(this);vlayout->addLayout(glayout);vlayout->addLayout(hlayout);// 信号槽函数连接connect(FileButton,SIGNAL(clicked()),this,SLOT(GetFileInfoFunc()));connect(GetFileInfoButton,SIGNAL(clicked()),this,SLOT(GetFileSizeFunc()));
}QFileDialogTest::~QFileDialogTest()
{
}void QFileDialogTest::GetFileInfoFunc() // 用于打开文件
{QString strFileName=QFileDialog::getOpenFileName(this,"打开","/","Files(*)");FileNameLineEdit->setText(strFileName);
}void QFileDialogTest::GetFileSizeFunc() // 用于获取文件大小
{// 获取单行编辑框控件里面文件路径等QString strFileNames=FileNameLineEdit->text();QFileInfo fileinfo(strFileNames);qint64 FileSize=fileinfo.size();FileSizeLabelLineEdit->setText(QString::number(FileSize));
}
二、QColorDialog 类(颜色对话框)
QColorDialog 类是一个颜色选择对话框类,用于在 Qt 应用程序中提供用户选择颜色的功能。该类提供了对于颜色选择的控制,包括多种预定义颜色、自定义颜色、调色板、更改颜色模型、透明度等选项。QColorDialog 类继承自 QDialog 类,因此可以像对待普通的对话框一样对待它。
使用 QColorDialog 类可以创建一个颜色选择对话框并将其显示在屏幕上,用户可以在对话框中选择想要的颜色并将其返回给应用程序。开发人员可以使用 QColorDialog 类的信号和槽机制来处理用户选择的颜色。例如,可以在选择颜色后使用 QColorDialog 类的颜色选择信号来更新另外的部分或部件的颜色。
QColorDialog 类是 Qt GUI 模块中的一部分,因此必须使用 #include <QColorDialog> 来包含该类的头文件。
案例分析:实现下图功能


代码示例:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>#include <QPushButton>
#include <QFrame>
#include <QColorDialog>
#include <QGridLayout>class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();private:QGridLayout *glayout;QPushButton *colorbutton;// QFrame类是基本控件的基类,QWidget是QFrame类型QFrame *colorFrame;private slots:void dispcolorFunc();};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle("颜色对话框测试");glayout=new QGridLayout(this); // new一个布局对象colorbutton=new QPushButton("调用颜色对话框");colorFrame=new QFrame;colorFrame->setFrameShape(QFrame::Box); // 设置形状colorFrame->setAutoFillBackground(true); // 填充背景处理glayout->addWidget(colorbutton,0,0);glayout->addWidget(colorFrame,1,0);// 信号槽函数连接connect(colorbutton,SIGNAL(clicked()),this,SLOT(dispcolorFunc()));
}Dialog::~Dialog()
{
}void Dialog::dispcolorFunc()
{QColor colorvalues=QColorDialog::getColor(Qt::red);if(colorvalues.isValid()){colorFrame->setPalette(QPalette(colorvalues));}
}
main.cpp
#include "dialog.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}
三、QFontDialog 类(字体对话框类)
QFontDialog 类是一个对话框,用于显示可供用户选择的字体。它允许用户选择字体,字体样式(粗体、斜体、下划线)和字体大小。它是 Qt 应用程序中常用的标准 Qt 对话框之一。
QFontDialog 类继承自 QDialog 类,它提供了一个简单的用户界面,允许用户选择字体。QFontDialog 类有多个静态函数,例如 getFont() 和 getFontInfo(),可以用来创建并显示字体对话框,然后获取用户选择的字体信息。
使用 QFontDialog 类时,需要注意以下几点:
- 需要在应用程序的 .pro 文件中添加 QT += widgets,才能使用 QFontDialog 类。
- 可以使用 setFont() 方法将当前字体设置为对话框中的默认选项,也可以使用 setCurrentFont() 方法将当前字体设置为对话框中的选择。
- 可以设置 QFontDialog::FontDialogOption 枚举类型变量来控制对话框的行为,例如允许用户选择固定大小字体、隐藏字体样式选项等。
- 在用户选择完字体后,可以使用 selectedFont() 方法获取用户选择的字体信息。
总之,QFontDialog 类是一个便捷的工具,用于允许用户选择他们喜欢的字体,从而提高应用程序的用户体验。
案例分析:实现下图功能

代码示例:
dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>#include <QPushButton>
#include <QLineEdit>
#include <QFontDialog>
#include <QGridLayout>class Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();private:QGridLayout *glayout;QPushButton *fontbutton;QLineEdit *fontlineedit;private slots:void dispFontFunc();};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"Dialog::Dialog(QWidget *parent): QDialog(parent)
{setWindowTitle("字体对话框测试");glayout=new QGridLayout(this);fontbutton=new QPushButton("调用字体对话框");fontlineedit=new QLineEdit;fontlineedit->setText("罗小白的干爹");glayout->addWidget(fontbutton,0,0);glayout->addWidget(fontlineedit,0,1);connect(fontbutton,SIGNAL(clicked()),this,SLOT(dispFontFunc()));}Dialog::~Dialog()
{
}void Dialog::dispFontFunc()
{bool isbool;QFont font=QFontDialog::getFont(&isbool);if(isbool){fontlineedit->setFont(font);}}
main.cpp
#include "dialog.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}
相关文章:
Qt (QFileDialogQColorDialogQFontDialog) 对话框实战
目录 一、QFileDialog 类 (文件对话框) 二、QColorDialog 类(颜色对话框) 三、QFontDialog 类(字体对话框类) 一、QFileDialog 类 (文件对话框) QFileDialog 是 Qt 框架中的一个类,用于在应用程序中提供文件对话框。它允许用户选择文件或目录,并且可…...
2.SpringSecurity - 处理器简单说明
文章目录 SpringSecurity 返回json一、登录成功处理器1.1 统一响应类HttpResult1.2 登录成功处理器1.3 配置登录成功处理器1.4 登录 二、登录失败处理器2.1 登录失败处理器2.2 配置登录失败处理器2.3 登录 三、退出成功处理器3.1 退出成功处理器3.2 配置退出成功处理器3.3 退出…...
AGI热门方向:国内前五!AI智能体TARS-RPA-Agent落地,实在智能打造人手一个智能助理
早在 1950 年代,Alan Turing 就将「智能」的概念扩展到了人工实体,并提出了著名的图灵测试。这些人工智能实体通常被称为 —— 代理(Agent)。 代理这一概念起源于哲学,描述了一种拥有欲望、信念、意图以及采取行动能力…...
运动品牌如何做到“全都要”?来看看安踏的答案
文 | 螳螂观察 作者 | 易不二 运动鞋服是兼具高景气和清晰格局的优质消费赛道。 中信证券给出的这一预测,欧睿国际也做出了更具体的测算:预计到2027年,中国运动服饰市场规模有望以约为8.7%的年复合增长率,突破5500亿元人民币。…...
LeetCode75——Day6
文章目录 一、题目二、题解 一、题目 151. Reverse Words in a String Given an input string s, reverse the order of the words. A word is defined as a sequence of non-space characters. The words in s will be separated by at least one space. Return a string …...
http代理有什么好处,怎么通过http代理服务安全上网呢?
通过http代理上网是一种常见的网络代理方式。http代理是指通过代理服务器进行网络连接,以实现隐藏自己的真实IP地址、保护个人隐私等目的。下面我们将介绍通过http代理上网的好处以及如何使用http代理服务来安全上网。 一、通过http代理上网的好处 1. 保护个人隐私 …...
vue3后台管理框架之axios二次封装
在开发项目的时候避免不了与后端进行交互,因此我们需要使用axios插件实现发送网络请求。在开发项目的时候 我们经常会把axios进行二次封装。 目的: 1:使用请求拦截器,可以在请求拦截器中处理一些业务(开始进度条、请求头携带公共参数) 2:使用响应拦截器…...
你的Github账户可能被封禁!教你应对Github最新的2FA二次验证! 无地区限制, 无额外设备的全网最完美方案
1 2FA 的定义 双因素身份验证 (2FA) 是一种身份和访管理安全方法,需要经过两种形式的身份验证才能访河资源和数据,2FA使企业能够监视和帮助保护其最易受攻击的信息和网络。 2 2FA 的身份验证方法 使用双因素身份验证时有不同的身份验证方法。此处列出…...
【C语言】#define宏与函数的优劣对比
本篇文章目录 1. 预处理指令#define宏2. #define定义标识符或宏,要不要最后加上分号?3.宏的参数替换后产生的运算符优先级问题3.1 问题产生3.2 不太完美的解决办法3.3 完美的解决办法 4.#define的替换规则5. 有副作用的宏参数6. 宏与函数的优劣对比6.1 宏…...
flask基础开发知识学习
之前做了一些LLM的demo,接口用flask写的,但是涉及到后端的一些业务就感觉逻辑写的很乱,代码变成屎山,于是借助官方文档和GPT迅速补了一些知识,总结一下一个很小的模板 于是决定边学边重构之前的代码… 文章目录 代码结…...
内网和热点同时连接使用配置
解决如标题问题 查看当前永久路由信息 route print截图保存(重要) 截图保存(重要)查出来的永久路由,以防配置不成功时回退,回退方法就是下面的“添加永久路由” 删除当前的路由 0.0.0.0 是上面查出的网络地址 route delete 0.0.0.0内网IP信息 添加永久…...
C语言 形参、实参
定义 形参 形式上的参数,没有确定的值 实参 实际存在的,已经确定的参数,常量,变量,表达式,都是实参 区别 实参的值不随形参的变化而变化 在C语言中,数据传送是单向的,即只能把实…...
linux入门到精通-第四章-gcc编译器
目录 参考gcc概述gcc的工作流程 参考 gcc编译器 gcc概述 编辑器vi、记事本)是指我用它来写程序的 (编辑码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我…...
HCIP静态路由综合实验
题目: 步骤: 第一步:搭建上图所示拓扑; 第二步:为路由器接口配置IP地址; R1: [R1]display current-configuration intinterface GigabitEthernet0/0/0ip address 192.168.1.1 255.255.255.252 interfa…...
nginx前端配置(新)
基础配置 server {listen 80;server_name your-frontend-domain.com;# 根目录为前端网页文件所在目录root /path/to/your/frontend/files;# 默认文档(例如 index.html)index index.html;location / {try_files $uri $uri/ /index.html; #try_files 指…...
js,jquery,vue设置html标签隐藏不显示
前端 <p id"myElement"> </p>使用js将idmyElemnt的标签隐藏 使用 style.display 属性: 通过设置 style.display 属性为 "none",可以隐藏标签。 var element document.getElementById("myElement");element…...
口袋参谋:如何实时监控对手数据?
在如此激烈的淘宝天猫上开店,如何才能获取对手的数据呢? 俗话说的好,知己知彼百战百胜,那么这句话同样也适用于淘宝天猫上。 只有掌握对手推广策略以及数据,我们才有机会反超,因此做好竞品监控是运营店…...
Q-learning如何与ABC等一些元启发式算法能够结合在一起?
1、出现的问题 Q-learning能和元启发式算法(如ABC、PSO、GA、SSA等)结合在一起,实现工作流调度问题? Q-learning和ABC (Artificial Bee Colony) 等元启发式算法可以结合在一起以解决特定类型的问题。Q-learning是一种强化学习算法…...
mysql 过滤多列重复的值(保留其中一条),对单列或者多列重复的值去重
建立测试数据表 CREATE TABLE test (id int(11) NOT NULL AUTO_INCREMENT,account varchar(255) DEFAULT NULL,password varchar(255) DEFAULT NULL,deviceId varchar(255) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8mb4;INSERT INT…...
面向红队的自动化引擎工具
gogo 介绍 面向红队的、高度可控的可拓展的自动化引擎。特征如下: 自由的端口配置 支持主动/主动指纹识别 关键信息提取,如标题、证书以及自定义提取信息的正则 支持nuclei poc,poc目录:https://chainreactors.github.io/wiki/…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
