QT学习之对话框(四)——字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

2. 在 .cpp 文件中定义该函数void MainWindow:

QT学习之对话框

随着科技的不断发展,软件开发也越来越重要。而在软件开发中,图形用户界面是非常重要的一部分。而在图形用户界面中,各种各样的窗口和控件都起着至关重要的作用。其中,对于一些需要与用户进行交互的操作,比如打开文件、选择字体等等,则需要使用到“对话框”这个控件。

本篇文章将介绍四种常见的QT 对话框:字体对话框、消息对话框、文件对 话 框和进程 对 话 框,并且提供详细步骤和代码示例。

一. 字体 对 话 框

字体 对 画 面板是一个用来设置字体属性(大小、颜色等)的标准 Qt 对象。其通过 QFontDialog 类实现。下面我们就来看看如何使用 QFontDialog 类:

1. 在主窗口类中添加以下成员函数:

“`

void fontDialog();

2. 在 .cpp 文件中定义该函数

void MainWindow::fontDialog()

{

bool ok;

QFont font = QFontDialog::getFont(&ok, QFont(“Helvetica [Cronyx]”, 10), this);

if (ok) {

// 字体设置成功

ui->textEdit->setFont(font);

} else {

// 用户取消了字体设置

}

}

3. 在 .h 文件中添加头文件

#include

4. 在主窗口类的构造函数中连接信号和槽

connect(ui->fontButton, &QPushButton::clicked, this, &MainWindow::fontDialog);

这里我们定义了一个 fontDialog() 函数,该函数实现了打开字体对话框并根据用户选择的字体进行相应操作。具体来说,当用户点击“字体”按钮时,就会调用 fontDialog() 函数。在该函数中,我们使用 QFontDialog 类的 getFont() 方法打开一个标准的 Qt 字体对话框。

其中,参数1 ok 表示是否成功获取到用户选择的字体;参数2 font 是默认显示在对话框上面的字体;参数3 this 表示父对象。

如果用户确定了选定的字体,则将其应用于 QTextEdit 控件(这里是 ui->textEdit)。否则,在控制台输出一条消息表示“用户取消了字体设置”。

二. 消息 对 画 面板

消息对话框是一种常见且重要的 QT 对话框类型。它通常被用来展示一些提示信息、确认信息或警告信息等等。下面我们就来看看如何使用 QMessageBox 类:

void messageDialog();

void MainWindow::messageDialog()

QMessageBox::information(this, tr(“提示”), tr(“这是一条消息!”));

#include

connect(ui->messageButton, &QPushButton::clicked, this, &MainWindow::messageDialog);

在上面的代码示例中,我们定义了一个 messageDialog() 函数,当用户点击“消息”按钮时,就会调用该函数。在该函数中,我们使用 QMessageBox 类的 information() 方法打开一个标准 Qt 消息对话框。

其中参数1表示父对象;参数2表示对话框标题;参数3表示要显示的内容。

三. 文件 对 画 面板

文件 对 画 面板是一种用于打开或保存文件的标准 QT 对象。其通过 QFileDialog 类实现。下面我们就来看看如何使用 QFileDialog 类:

1. 在主窗口类中添加以下成员变量:

“`

QString fileName;

QStringList fileNames;

2. 在 .cpp 文件中定义以下两个成员函数:

QT学习之对话框(四)——字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

void openFile();

void saveFile();

void MainWindow::openFile()

QString filePath = QFileDialog::getOpenFileName(this,

tr(“选择文件”),

“../”,

tr(“Text Files (*.txt)”));

if (!filePath.isEmpty()) {

QFile file(filePath);

if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {

QMessageBox::warning(this, tr(“警告”), tr(“无法打开文件!”), QMessageBox::Ok);

return;

}

QTextStream in(&file);

ui->textEdit->setText(in.readAll());

file.close();

void MainWindow::saveFile()

QString filePath = QFileDialog::getSaveFileName(this,

tr(“保存文件”),

if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {

QMessageBox::warning(this, tr(“警告”), tr(“无法保存文件!”), QMessageBox::Ok);

QTextStream out(&file);

out <textEdit->toPlainText();

file.close();

}

#include

connect(ui->openButton, &QPushButton::clicked, this, &MainWindow::openFile);

connect(ui->saveButton, &QPushButton::clicked,this,&MainWindow::saveFile);

在上面的代码示例中,我们定义了两个成员函数 openFile() 和 saveFile()。当用户点击“打开”按钮时,就会调用 openFile() 函数;当用户点击“保存”按钮时,则会调用 saveFile() 函数。

在这两个函数中,我们使用了 QFileDialog 类的 getOpenFileName() 和 getSaveFileName() 方法打开标准的 Qt 文件对话框。

其中,参数1表示父对象;参数2表示对话框标题;参数3表示默认路径;参数4则是文件过滤器,用于限制用户选择的文件类型。在这里我们设置为文本文件(*.txt)。

如果用户成功选择了某个文件,则会将其加载到 QTextEdit 控件中或者将 QTextEdit 控件中的内容保存到指定位置。

四. 进程 对 画 面板

进程 对 画 面板是一种用于展示进程运行情况和进行操作的 QT 对象。其通过 QProcess 类实现。下面我们就来看看如何使用 QProcess 类:

QProcess *process;

void startProcess();

void stopProcess();

void MainWindow::startProcess()

process = new QProcess(this);

connect(process, &QProcess::readyReadStandardOutput, [=](){

ui->textBrowser->append(process->readAll