阅读导航
- 引言
- 一、字体对话框 QFontDialog
- 1. 简介
- 2. 基本用法
- 3. 示例代码
 
- 二、输入对话框 QInputDialog
- 1. 简介
- 2. 基本用法
- (1)双精度浮点型输入数据对话框
- (2)整型输入数据对话框
- (3)选择条目型输入数据框
 
- 3. 示例代码
- 🎯创建浮点型数据输入对话框
- 🎯创建整型数据输入对话框
- 🎯创建打开选择条目对话框
 
 
引言
继QFileDialog之后,本次我们将探索QFontDialog与QInputDialog,前者助力用户个性化文本外观,后者则简化用户输入过程,共同提升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_MIN和INT_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();  
    });  
}



















