Qt之基本对话框

本文详细介绍了Qt中的基本对话框,包括QFileDialog、QColorDialog、QFontDialog、QInputDialog和QMessageBox的使用方法。通过实例展示了如何在主窗口中添加并处理这些对话框的信号槽关联,以及不同类型的输入和消息提示功能。
摘要由CSDN通过智能技术生成

Qt之基本对话框
基本对话框主要介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox)。
在这里插入图片描述
1.首先创建Mainwindow窗口,添加8个界面元素,分别为文件标准对话框、颜色标准对话框、字体标准对话框、标准输入对话框和标准消息对话框5个QPushButton对象,文件标准编辑框、字体标准编辑框2个QLineEdit对象,颜色标准框QFrame对象。我采用的是new添加控件方式,大家可以选择工具箱拖动方式。
在这里插入图片描述
2.为按钮控件创建信号槽关联关系。
在这里插入图片描述

3.上图中m_tabInfo[WID_QDialog].pWidget大家可以用this指针代替,我使用它的目的是想把Qt所有控件的实现集成到一个功能界面上,方面后期回忆学习。生成的界面如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/73f15d06b5f1479c9c3db294f9c9706f.png在这里插入图片描述

1.标准文件对话框(QFileDialog)

1.QFileDialog类提供了几个静态函数接口,我们可以通过这些函数定制自己的文件对话框。本文在slotBtnFileDlg()函数中实现标准文件对话框的功能。
在这里插入图片描述
2.测试过程
点击标准文件对话框按钮。
在这里插入图片描述
3.测试结果
在这里插入图片描述

2.标准颜色对话框(QColorDialog)

1.本文在slotBtnColorDlg()函数中实现标准颜色对话框的功能。
在这里插入图片描述
2.测试过程
点击标准颜色对话框按钮。
在这里插入图片描述

3.测试结果
在这里插入图片描述

3.标准字体对话框(QFontDialog)

1.本文在slotBtnFontDlg()函数中实现标准字体对话框的功能。
在这里插入图片描述
2.测试过程
点击标准字体对话框按钮。
在这里插入图片描述

3.测试结果
在这里插入图片描述

4.标准输入对话框(QInputDialog)

标准输入对话框提供四种数据类型的输入,包括字符串、下拉列表框的条目、int数据类型和double数据类型。为方便展示这四种输入情况,特采用一个新的窗口实现。

新建InputDlg窗口

1.新增InputDlg窗口,继承自QDialog,选择Dialog without buttons。添加姓名、性别、年龄、分数4个QPushButton对象和4个QLineEdit对象,生成界面如下:
在这里插入图片描述
2.在主窗口添加InputDlg的实现方法。
在这里插入图片描述

标准字符串输入对话框

标准字符串输入对话框通过QInputDialog类的静态函数getText完成。添加“姓名”按钮对应的点击槽函数,实现姓名的输入功能。
1.代码实现
在这里插入图片描述
2.功能测试
输入一个有效字符,查看是否显示正确。
在这里插入图片描述
在这里插入图片描述

标准条目选择对话框

标准条目选择对话框通过QInputDialog类的静态函数getItem完成。添加“性别”按钮对应的点击槽函数,实现性别的选择功能。
1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述
在这里插入图片描述

标准int类型输入对话框

标准int类型输入对话框通过QInputDialog类的静态函数getInt完成。添加“年龄”按钮对应的点击槽函数,实现年龄的修改功能。
1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述
在这里插入图片描述

标准double类型输入对话框

标准double类型输入对话框通过QInputDialog类的静态函数getDouble完成。添加“分数”按钮对应的点击槽函数,实现分数的修改功能。
1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述
在这里插入图片描述

5.标准消息对话框(QMessageBox)

Qt提供了QMessage类用于为用户提供一些提示或提醒,常用的消息对话框包括Question消息框、Information消息框、Warning消息框、Critical消息框、About(关于)消息框、About(关于)Qt消息框及custom(自定义)消息框。
Question消息框:为正常的操作提供一个简单的询问;
Information消息框:为正常的操作提供一个提示;
Warning消息框:提醒用户发生了一个错误;
Critical消息框:讲稿用户发生了一个严重错误。

新建MsgDlg窗口

1.新建MsgDlg窗口,继承自QDialog,选择Dialog without buttons。添加QuestionMsg、InformationMsg、WarningMsg、CriticalMsg、AboutMsg、AboutQtMsg6个QPushButton对象。
在这里插入图片描述
2.在主窗口添加MsgDlg窗口调用方法。
在这里插入图片描述

Question消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

Information消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

Warning消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

Critical消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

About(关于)消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

About(关于)Qt消息框

1.代码实现
在这里插入图片描述
2.功能测试
在这里插入图片描述

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基本信息。下面是一个基于Qt对话框示例,可以输入姓名、性别、学号和生日: ```c++ #include <QDialog> #include <QLabel> #include <QLineEdit> #include <QComboBox> #include <QDateEdit> #include <QDialogButtonBox> #include <QHBoxLayout> #include <QVBoxLayout> class InfoDialog : public QDialog { Q_OBJECT public: InfoDialog(QWidget *parent = nullptr); QString getName() const; QString getGender() const; QString getStudentID() const; QDate getBirthday() const; private slots: void accept(); private: QLabel *nameLabel; QLineEdit *nameEdit; QLabel *genderLabel; QComboBox *genderComboBox; QLabel *studentIDLabel; QLineEdit *studentIDEdit; QLabel *birthdayLabel; QDateEdit *birthdayEdit; QDialogButtonBox *buttonBox; }; InfoDialog::InfoDialog(QWidget *parent) : QDialog(parent) { nameLabel = new QLabel(tr("Name:")); nameEdit = new QLineEdit; genderLabel = new QLabel(tr("Gender:")); genderComboBox = new QComboBox; genderComboBox->addItem(tr("Male")); genderComboBox->addItem(tr("Female")); studentIDLabel = new QLabel(tr("Student ID:")); studentIDEdit = new QLineEdit; birthdayLabel = new QLabel(tr("Birthday:")); birthdayEdit = new QDateEdit; birthdayEdit->setDisplayFormat("yyyy-MM-dd"); birthdayEdit->setCalendarPopup(true); birthdayEdit->setMaximumDate(QDate::currentDate()); buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); QHBoxLayout *nameLayout = new QHBoxLayout; nameLayout->addWidget(nameLabel); nameLayout->addWidget(nameEdit); QHBoxLayout *genderLayout = new QHBoxLayout; genderLayout->addWidget(genderLabel); genderLayout->addWidget(genderComboBox); QHBoxLayout *studentIDLayout = new QHBoxLayout; studentIDLayout->addWidget(studentIDLabel); studentIDLayout->addWidget(studentIDEdit); QHBoxLayout *birthdayLayout = new QHBoxLayout; birthdayLayout->addWidget(birthdayLabel); birthdayLayout->addWidget(birthdayEdit); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(nameLayout); mainLayout->addLayout(genderLayout); mainLayout->addLayout(studentIDLayout); mainLayout->addLayout(birthdayLayout); mainLayout->addWidget(buttonBox); setLayout(mainLayout); setWindowTitle(tr("Information")); } QString InfoDialog::getName() const { return nameEdit->text(); } QString InfoDialog::getGender() const { return genderComboBox->currentText(); } QString InfoDialog::getStudentID() const { return studentIDEdit->text(); } QDate InfoDialog::getBirthday() const { return birthdayEdit->date(); } void InfoDialog::accept() { if (nameEdit->text().isEmpty() || studentIDEdit->text().isEmpty()) { QMessageBox::warning(this, tr("Warning"), tr("Name and Student ID are required.")); } else { QDialog::accept(); } } ``` 在主窗口中使用该对话框的示例代码: ```c++ #include <QApplication> #include <QPushButton> #include <QMessageBox> #include "infodialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QPushButton button("Show Info Dialog"); QObject::connect(&button, &QPushButton::clicked, [&](){ InfoDialog dialog; if (dialog.exec() == QDialog::Accepted) { QString name = dialog.getName(); QString gender = dialog.getGender(); QString studentID = dialog.getStudentID(); QDate birthday = dialog.getBirthday(); QMessageBox::information(nullptr, "Information", QString("Name: %1\nGender: %2\nStudent ID: %3\nBirthday: %4") .arg(name).arg(gender).arg(studentID).arg(birthday.toString("yyyy-MM-dd"))); } }); button.show(); return a.exec(); } ``` 运行后点击“Show Info Dialog”按钮,就可以弹出一个对话框来输入基本信息。如果输入的姓名和学号为空,点击“OK”按钮时会弹出一个警告框提示用户。如果输入的信息都是正确的,点击“OK”按钮后会返回`QDialog::Accepted`,然后可以通过对话框的公共槽函数获取输入的信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值