Qt常用对话框设计

一、概述

Qt提供了多种自带的标准对话框,常见的对话框包括文件对话框颜色对话框字体对话框输入对话框消息对话框

二、文件对话框

文件对话框通过QFileDialog类实现,通过文件对话框可以打开一个文件浏览对话框,可以实现打开文件、文件目录选择、保存文件的功能。

2.1、打开一个文件

打开一个文件调用的函数原型为

QString QFileDialog::getOpenFileName(QWidget *parent = Q_NULLPTR, 
									 const QString &caption = QString(), 	//对话框标题
									 const QString &dir = QString(), 		//初始目录
									 const QString &filter = QString(), 	//文件过滤器
									 QString *selectedFilter = Q_NULLPTR, 
									 Options options = Options());

该函数使用是主要使用前4个参数,示例程序代码如下:

    QString fileName;
    QString dlgTitle = "打开一个文件";
    QString filter = "文本文件(*.txt);;图片(*.jpg);;所有文件(*.*)";
    fileName = QFileDialog::getOpenFileName(this, dlgTitle, "", filter);

程序运行之后将会弹出如下图所示的对话框,选择完一个文件之后,文件名以及其路径将会返回至QString变量fileName。对话框仅用于获取所选文件的路径及名称,具体对文件的读操作则需要通过QFile等函数完成。
对话框标题以及文件过滤器所在的位置已在图中标出。
在这里插入图片描述

2.2、打开多个文件

可以在弹出的对话框中选择多个文件,其函数原型为:

QStringList QFileDialog::getOpenFileNames(QWidget *parent = Q_NULLPTR, 
										  const QString &caption = QString(), 	//对话框标题
										  const QString &dir = QString(), 		//初始目录
										  const QString &filter = QString(), 	//文件过滤器
										  QString *selectedFilter = Q_NULLPTR, 
										  Options options = Options())

示例程序代码如下:

    QStringList fileNames;
    QString dlgTitle = "打开多个文件";
    QString filter = "文本文件(*.txt);;图片(*.jpg);;所有文件(*.*)";
    fileNames = QFileDialog::getOpenFileNames(this, dlgTitle, "", filter);

程序运行之后弹出的对话框与打开文件时相似,当选择完多个文件之后,各个文件的文件名以及其路径将会返回至QStringList变量fileNames中。

2.3、保存文件对话框

通过此对话框可以为文件选择保存的路径及文件名,其函数原型为:

QString QFileDialog::getSaveFileName(QWidget *parent = Q_NULLPTR, 
									 const QString &caption = QString(), 
									 const QString &dir = QString(), 
									 const QString <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,对话框Dialog)是一种常用的用户界面元素,用于向用户显示特定信息、获取用户输入或执行特定操作。下面演示一下如何创建一个简单的对话框并显示其用法: 1. 创建一个新的Qt对话框类。 2. 在设计界面中添加所需的控件,如标签、文本框、按钮等。 3. 在对话框类中添加槽函数,用于响应用户操作。 4. 在代码中创建对话框对象,并调用其`exec()`函数显示对话框。 下面以一个简单的登录对话框为例,演示如何创建和使用对话框: 1. 创建一个新的Qt对话框类,例如`LoginDialog`。 2. 在设计界面中添加用户名和密码输入框、登录和取消按钮等控件。 3. 在`LoginDialog`类中添加槽函数`onLoginButtonClicked()`和`onCancelButtonClicked()`,用于响应登录和取消按钮的点击事件。 ```cpp void LoginDialog::onLoginButtonClicked() { // 获取用户名和密码 QString username = ui->usernameLineEdit->text(); QString password = ui->passwordLineEdit->text(); // 验证用户名和密码是否正确 if (username == "admin" && password == "123456") { // 登录成功,关闭对话框并返回QDialog::Accepted accept(); } else { // 登录失败,清空输入框并显示错误提示 ui->usernameLineEdit->clear(); ui->passwordLineEdit->clear(); ui->usernameLineEdit->setFocus(); QMessageBox::warning(this, "Warning", "Invalid username or password!"); } } void LoginDialog::onCancelButtonClicked() { // 取消登录,关闭对话框并返回QDialog::Rejected reject(); } ``` 4. 在需要显示对话框的地方,创建`LoginDialog`对象,并调用其`exec()`函数显示对话框。 ```cpp LoginDialog dlg; if (dlg.exec() == QDialog::Accepted) { // 登录成功,执行相应操作 } else { // 取消登录,不执行任何操作 } ``` 完整示例代码如下: ```cpp // LoginDialog.h #ifndef LOGINDIALOG_H #define LOGINDIALOG_H #include <QDialog> namespace Ui { class LoginDialog; } class LoginDialog : public QDialog { Q_OBJECT public: explicit LoginDialog(QWidget *parent = 0); ~LoginDialog(); private slots: void onLoginButtonClicked(); void onCancelButtonClicked(); private: Ui::LoginDialog *ui; }; #endif // LOGINDIALOG_H // LoginDialog.cpp #include "LoginDialog.h" #include "ui_LoginDialog.h" #include <QMessageBox> LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog) { ui->setupUi(this); connect(ui->loginButton, &QPushButton::clicked, this, &LoginDialog::onLoginButtonClicked); connect(ui->cancelButton, &QPushButton::clicked, this, &LoginDialog::onCancelButtonClicked); } LoginDialog::~LoginDialog() { delete ui; } void LoginDialog::onLoginButtonClicked() { // 获取用户名和密码 QString username = ui->usernameLineEdit->text(); QString password = ui->passwordLineEdit->text(); // 验证用户名和密码是否正确 if (username == "admin" && password == "123456") { // 登录成功,关闭对话框并返回QDialog::Accepted accept(); } else { // 登录失败,清空输入框并显示错误提示 ui->usernameLineEdit->clear(); ui->passwordLineEdit->clear(); ui->usernameLineEdit->setFocus(); QMessageBox::warning(this, "Warning", "Invalid username or password!"); } } void LoginDialog::onCancelButtonClicked() { // 取消登录,关闭对话框并返回QDialog::Rejected reject(); } // main.cpp #include "LoginDialog.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); LoginDialog dlg; if (dlg.exec() == QDialog::Accepted) { // 登录成功,执行相应操作 } else { // 取消登录,不执行任何操作 } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值