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

news2024/9/25 9:28:47

阅读导航

  • 引言
  • 一、字体对话框 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();  
    });  
}

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

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

相关文章

李沐对大模型趋势的几点判断

李沐是上海交通大学 2011 届计算机科学与工程系本硕系友。他曾担任亚马逊资深首席科学家&#xff0c;加州大学伯克利分校和斯坦福大学的访问助理教授&#xff0c;是前 Marianas Labs 联合创始人&#xff0c;深度学习框架 Apache MXNet 的创始人之一。目前是 BosonAI 联合创始人…

【数据分析】标准误差与标准差的区别

标准误差&#xff08;Standard Error, SE&#xff09;和标准差&#xff08;Standard Deviation, SD&#xff09;是两个在统计学中非常重要的概念&#xff0c;但它们的含义和用途有所不同。以下是它们之间的主要区别&#xff1a; 定义&#xff1a; 标准差&#xff1a;衡量单个数…

【mybatis】使用模糊查询时报错:Encountered unexpected token: “?“ “?“

报错信息如下&#xff1a; Mapper.xml报错代码&#xff1a; AND HILIST_NAME like %#{hilistName}% 解决方案&#xff1a; 把模糊查询的 sql 语句改为使用 CONCAT 命令拼接, 就不会报错了。 AND HILIST_NAME like CONCAT(%, #{hilistName},%)

深入探讨-JavaScript-逻辑赋值运算符

null && 100**2 // null undefined && 100**2 // undefined 逻辑赋值运算符 && || ?? 这个运算符将赋值与条件逻辑运算符结合在一起&#xff0c;因此命名为**“逻辑赋值”** 。它们只是一种简写&#xff0c; 例如&#xff0c;x && y是x …

Windows本地部署ollama并实现无公网IP远程运行qwen大语言模型

文章目录 前言1. 运行Ollama2. 安装Open WebUI2.1 在Windows系统安装Docker2.2 使用Docker部署Open WebUI 3. 安装内网穿透工具4. 创建固定公网地址 前言 本文主要介绍如何在Windows系统快速部署Ollama开源大语言模型运行工具&#xff0c;并安装Open WebUI结合cpolar内网穿透软…

打造智能数据分析平台:基于 Flask 的数据处理与模型精度验证系统

数据分析和机器学习已成为企业和科研中不可或缺的核心技术。在这个数据驱动的时代&#xff0c;能够快速处理海量数据&#xff0c;并通过智能算法提取出有用信息&#xff0c;成为了提升竞争力的关键。为了解决这些需求&#xff0c;我基于 Flask 开发了一款功能强大、模块化的数据…

【蓝桥杯单片机-0.基于定时器的时钟程序设计】

蓝桥杯单片机-0.基于定时器的时钟程序设计 题目小注意点按键三行矩形按键按键功能时间更新显示界面的小数点LED灯闪烁其他功能 完整代码 链接: 视频搭配视频&#xff0c;这里只是一些笔记&#xff0c;并不完整 题目 小注意点 按键三行 Key_Val Key_Read();//实时读取键码值…

JDBC知识点总结概括(day29)

1 学习目标 了解JDBC的概念重点掌握JDBC的CRUD重点掌握JDBC的各个对象的使用 2 GIT 查看安装手册 3 JDBC概述 3.1 数据的持久化 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持…

【人工智能学习笔记】5 计算机视觉基础

计算机视觉概述 定义&#xff1a;计算机视觉&#xff08;Computer Vision&#xff09;是一门研究如何使机器“看”的科学&#xff0c;也可以看作是研究如何使人工系统从图像活多维数据中“感知”的科学终极目标&#xff1a;计算机视觉成为机器认知世界的基础&#xff0c;终极目…

Linux——高流量 高并发(访问场景) 高可用(架构要求)

高并发通用设计逻辑&#xff1a; 定位单点&#xff0c;拆分问题 架构调整的顺序&#xff1a; 动静分离 // 没有实现动静分离 // 静态请求 交给 nginx或者 httpd 这种对于静态资源处理效率更高的服务&#xff0c;动态请求 交给php-fpm 服务来处理 使用云服务提供商 &#xff…

怎么翻译图片上的文字?6种方法教你快速翻译

现如今&#xff0c;图片已经成为传播信息的重要载体之一&#xff0c;然而&#xff0c;图片上的文字往往成为我们获取信息的障碍。幸运的是&#xff0c;随着技术的发展&#xff0c;多种图片文字翻译工具应运而生&#xff0c;让翻译变得简单快捷。很多小伙伴不清楚哪些翻译工具简…

《JavaEE进阶》----15.<Spring Boot 日志>

本篇文章将记录我学习SpringBoot日志 1.日志文件的用途 2.SpringBoot日志文件的配置 3.用lombook依赖引入Slf4j注解&#xff0c;从而引入log对象。方便我们打印日志。 一、日志的作用 日志主要是为了发现问题、分析问题、定位问题。除此之外、日志还有许多其他的用途。 1.系统监…

玩转西门子 S7-1200/1500 的 Modbus RTU 通信诊断

01 概述工控人加入PLC工业自动化精英社群 Modbus RTU 是一种串行通信协议&#xff0c;由于具有协议透明&#xff0c;实现成本低&#xff0c;简单易用等诸多特点&#xff0c;至今仍然广泛应用在工业控制的各个领域。 为了通信可以长期稳定的运行&#xff0c;并且可以在故障时可…

Vue组件:依赖注入provide和inject的使用

1、Prop 逐级透传问题 通常情况下&#xff0c;当我们需要从父组件向子组件传递数据时&#xff0c;会使用 props。想象一下这样的结构&#xff1a;有一些多层级嵌套的组件&#xff0c;形成了一棵巨大的组件树&#xff0c;而某个深层的子组件需要一个较远的祖先组件中的部分数据…

智慧水务建设的核心内容

智慧水务解决方案的主要对象客户是全国各地水务投资集团、水务局、水司、水厂、农水办,也会有少量项目涉及到住建局或城管局。解决方案通常会以具体的某个业务单位的职能工作为切入点,配合物联感知、大数据分析、人工智能等技术手段,为城市供水、乡村供水的水质安全、供水调…

一文彻底了解DNS协议工作原理,恐怕没有比这更通俗易懂的了吧?

了解DNS工作原理有助于深入理解互联网通信的基础机制&#xff0c;对于网络运维、开发以及优化网站访问速度至关重要。它能帮助解决域名解析问题&#xff0c;提升用户体验&#xff0c;同时对于网络安全和防护也具有重要意义。本文博主反反复复、前前后后斟酌了三天&#xff0c;就…

【学习笔记】手写Tomcat 二

目录 响应静态资源 HTTP协议请求格式 1. 解析请求信息 创建解析请求类 HttpRequest 2. 创建静态资源目录 webs 3. 封装响应信息 创建静态资源处理器 StaticResourceHandler 创建响应类 HttpResponse 作业 1. 绘制 请求解析类 HttpRequest 和响应类 HttpResponse 的封…

动手学深度学习(pytorch土堆)-03常见的Transforms

Compose transforms.Compose 是 PyTorch 中的一个函数&#xff0c;用于将多个图像变换操作组合在一起&#xff0c;形成一个变换流水线。这样可以将一系列的图像处理操作整合为一个步骤&#xff0c;便于对图像进行批量预处理或增强。 基本用法 transforms.Compose 接受一个列表…

vue + Lodop 制作可视化设计页面 实现打印设计功能(四)

历史&#xff1a; vue2 Lodop 制作可视化设计页面 实现打印设计功能&#xff08;一&#xff09; vue Lodop 制作可视化设计页面 实现打印设计功能&#xff08;二&#xff09; vue Lodop 制作可视化设计页面 实现打印设计功能&#xff08;三&#xff09; 前言&#xff1a…

必看!实网环境下,合宙Cat.1模组低功耗详细数据

一、背景说明 合宙4G Cat.1模组以低功耗为显著特点&#xff0c;提供了三种功耗模式以适应不同需求。 分别是&#xff1a;常规模式&#xff0c;低功耗模式&#xff0c;PSM模式。 在实际应用中&#xff0c;用户可以根据不同的应用场景和需求&#xff0c;灵活选择合宙4G Cat.1模…