1、概述
QDialog是Qt框架中用于创建对话框的类,它继承自QWidget。QDialog提供了一个模态或非模态的对话框,用于与用户进行交互。模态对话框会阻塞其他窗口的输入,直到用户关闭该对话框;而非模态对话框则允许用户同时与多个窗口进行交互。QDialog可以包含各种控件,如按钮、文本框、标签等,用于收集用户输入或显示信息。
2、重要方法
- exec():以模态方式运行对话框,并返回用户选择的按钮(如QDialog::Accepted或QDialog::Rejected)。这是模态对话框最常用的方法。
- open():以非模态方式显示对话框。
- close():关闭对话框。
- accept():接受对话框,通常与“确定”或“是”按钮相关联,并返回QDialog::Accepted。
- reject():拒绝对话框,通常与“取消”或“否”按钮相关联,并返回QDialog::Rejected。
- setModal(bool modal):设置对话框是否为模态。
- setResult(int result):设置对话框的结果代码。
- result():返回对话框的结果代码。
3、重要信号
- accepted():当用户接受对话框时发出。
- rejected():当用户拒绝对话框时发出。
- finished(int result):当对话框关闭时发出,并返回结果代码。
#include <QApplication>
#include <QDialog>
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QDebug>
class MyDialog : public QDialog {
Q_OBJECT
public:
MyDialog(QWidget *parent = nullptr) : QDialog(parent) {
setWindowTitle("简单对话框");
QVBoxLayout *layout = new QVBoxLayout(this);
QLabel *label = new QLabel("请输入您的名字:", this);
layout->addWidget(label);
nameEdit = new QLineEdit(this);
layout->addWidget(nameEdit);
QPushButton *okButton = new QPushButton("确定", this);
connect(okButton, &QPushButton::clicked, this, &MyDialog::accept);
layout->addWidget(okButton);
QPushButton *cancelButton = new QPushButton("取消", this);
connect(cancelButton, &QPushButton::clicked, this, &MyDialog::reject);
layout->addWidget(cancelButton);
}
QString getName() const {
return nameEdit->text();
}
private:
QLineEdit *nameEdit;
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyDialog dialog;
if (dialog.exec() == QDialog::Accepted) {
qDebug() << "用户输入的名字:" << dialog.getName();
} else {
qDebug() << "用户取消了对话框。";
}
return app.exec();
}
觉得有帮助的话,打赏一下呗。。