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

Qt (15)【Qt窗口 —— 字体对话框 QFontDialog | 输入对话框 QInputDialog】

阅读导航

  • 引言
  • 一、字体对话框 QFontDialog
    • 1. 简介
    • 2. 基本用法
    • 3. 示例代码
  • 二、输入对话框 QInputDialog
    • 1. 简介
    • 2. 基本用法
      • (1)双精度浮点型输入数据对话框
      • (2)整型输入数据对话框
      • (3)选择条目型输入数据框
    • 3. 示例代码
      • 🎯创建浮点型数据输入对话框
      • 🎯创建整型数据输入对话框
      • 🎯创建打开选择条目对话框

引言

QFileDialog之后,本次我们将探索QFontDialogQInputDialog,前者助力用户个性化文本外观,后者则简化用户输入过程,共同提升Qt应用的交互体验。

一、字体对话框 QFontDialog

1. 简介

QFontDialog 是 Qt 框架中的一个对话框类,用于允许用户选择字体属性,如字体家族、字体样式、字体大小、是否加粗、是否倾斜以及字体颜色等。这个对话框为开发者提供了一个方便的方式来集成字体选择功能到他们的应用程序中,而无需从头开始编写字体选择界面。

2. 基本用法

要使用 QFontDialog,你首先需要包含相应的头文件,并在你的应用程序中创建它的一个实例。然后,你可以配置对话框的初始设置(如默认字体),并通过调用其 exec() 方法来显示对话框。用户完成选择后,你可以通过 QFontDialog 提供的接口来获取用户选择的字体设置。

3. 示例代码

下面是一个简单的示例,展示了如何使用 QFontDialog 来让用户选择一个字体,并打印出相关属性

void MainWindow::on_pushButton_clicked()
{bool ok = false;QFont font = QFontDialog::getFont(&ok);qDebug() << "ok = " << ok;qDebug() << font.family();qDebug() << font.pointSize();qDebug() << font.bold();qDebug() << font.italic();ui->pushButton->setFont(font);
}

在这里插入图片描述

二、输入对话框 QInputDialog

1. 简介

QInputDialog 是 Qt 框架中的一个对话框类,用于从用户那里获取简单的输入。它提供了几种不同的模式来收集数据,包括文本输入、整数输入、浮点数输入以及从列表中选择一个项目。QInputDialog 非常适合于需要用户输入少量数据的场景,如设置配置选项、请求用户输入文件名等。

2. 基本用法

(1)双精度浮点型输入数据对话框

对于双精度浮点数,通常不需要像整数那样限制其最大值和最小值到特定的整数值(如-2147483647和2147483647,这是int类型的范围)。我们可以为双精度数设置更合理的范围,如负无穷大到正无穷大(但在实际应用中,通常会设置更具体的范围)。

double QInputDialog::getDouble(QWidget *parent = nullptr,const QString &title = QString(),const QString &label = QString(),double value = 0.0,double min = -DBL_MAX,double max = DBL_MAX,int decimals = 1,bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags());

注意,这里使用了DBL_MAX(在<cfloat><float.h>中定义)来表示双精度浮点数的最大可能值,从而提供了一个合理的上限。

(2)整型输入数据对话框

对于整数输入,通常我们会将最小值和最大值设置为INT_MININT_MAX(在<climits><limits.h>中定义),以匹配int类型的实际范围。

int QInputDialog::getInt(QWidget *parent = nullptr,const QString &title = QString(),const QString &label = QString(),int value = 0,int min = INT_MIN,int max = INT_MAX,int step = 1,bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags());

(3)选择条目型输入数据框

QString QInputDialog::getItem(QWidget *parent = nullptr,const QString &title = QString(),const QString &label = QString(),const QStringList &items,int current = 0,bool editable = true,bool *ok = nullptr,Qt::WindowFlags flags = Qt::WindowFlags(),Qt::InputMethodHints inputMethodHints = Qt::ImhNone);

3. 示例代码

🎯创建浮点型数据输入对话框

#include "mainwindow.h"  
#include <QPushButton>  
#include <QInputDialog>  
#include <QDebug>  MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {  resize(800, 600);  QPushButton *btn = new QPushButton("输入框", this);  QInputDialog *idlg = new QInputDialog(this);  connect(btn, &QPushButton::clicked, [=]() {  double d = idlg->getDouble(this, "输入框", "浮点型");  qDebug() << "d= " << d;  });  
}

🎯创建整型数据输入对话框

#include "mainwindow.h"  
#include <QPushButton>  
#include <QInputDialog>  
#include <QDebug>  MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {  resize(800, 600);  QPushButton *btn = new QPushButton("输入框", this);  QInputDialog *idlg = new QInputDialog(this); connect(btn, &QPushButton::clicked, [=]() {  int i = idlg->getInt(this, "输入框", "Int"); qDebug() << "i= " << i; });  
}

🎯创建打开选择条目对话框

#include "mainwindow.h"  
#include <QPushButton>  
#include <QInputDialog>  
#include <QDebug>  MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {  resize(800, 600);  QPushButton *btn = new QPushButton("输入框", this);  QInputDialog *idlg = new QInputDialog(this);  connect(btn, &QPushButton::clicked, [=]() {  QStringList items;  items << tr("Spring") << tr("Summer") << tr("Fall") << tr("Winter");  QString item = idlg->getItem(this, "输入框", "Item", items);  qDebug() << "item:" << item.toUtf8().data();  });  
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【压力测试】如何确定系统最大并发用户数?
  • 超市会员管理系统
  • SQL经典五十道选刷
  • Tushare库:Python金融数据分析的利器
  • 鸿蒙(API 12 Beta6版)图形【 请求动画绘制帧率】方舟2D图形服务
  • Linux开发:优化VSCode C++开发体验
  • 什么酱酒能收藏几十年?快来打造你的私人酒窖宝藏
  • Vue双向绑定
  • 【Linux操作系统】线程的互斥与同步
  • machine learning - 2
  • 【VUE】Vue 组件详解
  • 【SpringBoot】使用Redis
  • 一文搞懂 | Pytorch维度转换操作:view,reshape,permute,flatten函数详解
  • linux中vim常用命令大全
  • 微软RD客户端 手机 平板 远程控制 Windows桌面
  • Brief introduction of how to 'Call, Apply and Bind'
  • Git 使用集
  • go语言学习初探(一)
  • Java Agent 学习笔记
  • Map集合、散列表、红黑树介绍
  • Material Design
  • Nodejs和JavaWeb协助开发
  • Spring核心 Bean的高级装配
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 解析 Webpack中import、require、按需加载的执行过程
  • 再次简单明了总结flex布局,一看就懂...
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​补​充​经​纬​恒​润​一​面​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # dbt source dbt source freshness命令详解
  • #### golang中【堆】的使用及底层 ####
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #FPGA(基础知识)
  • %check_box% in rails :coditions={:has_many , :through}
  • (07)Hive——窗口函数详解
  • (2.2w字)前端单元测试之Jest详解篇
  • (26)4.7 字符函数和字符串函数
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (补充)IDEA项目结构
  • (六)vue-router+UI组件库
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三)终结任务
  • (转)Google的Objective-C编码规范
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)人的集合论——移山之道
  • (自用)网络编程
  • ./configure、make、make install 命令
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET : 在VS2008中计算代码度量值
  • .net 7和core版 SignalR
  • .Net 代码性能 - (1)