Qt 5 模态对话框
时间: 2023-07-10 14:23:28 浏览: 120
模态对话框是一种常见的界面交互方式,它要求用户必须先完成对话框上的操作(比如输入数据或选择选项)才能继续操作主窗口。在 Qt 5 中,可以通过以下步骤创建模态对话框:
1. 创建一个 QDialog 类的子类,作为对话框窗口的实现。
2. 在主窗口中调用对话框类的 exec() 函数,将其显示为模态对话框。
3. 在对话框类中编写相应的逻辑代码,处理用户输入并返回结果。
下面是一个简单的示例:
```C++
// MyDialog.h
#include <QDialog>
class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog(QWidget *parent = nullptr);
~MyDialog();
private slots:
void onOkClicked();
private:
QLineEdit *m_lineEdit;
};
// MyDialog.cpp
#include <QVBoxLayout>
#include <QLineEdit>
#include <QPushButton>
MyDialog::MyDialog(QWidget *parent)
: QDialog(parent)
{
m_lineEdit = new QLineEdit(this);
QPushButton *okButton = new QPushButton(tr("OK"), this);
connect(okButton, &QPushButton::clicked, this, &MyDialog::onOkClicked);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_lineEdit);
layout->addWidget(okButton);
setWindowTitle(tr("My Dialog"));
}
MyDialog::~MyDialog()
{
}
void MyDialog::onOkClicked()
{
QString text = m_lineEdit->text();
accept(); // 关闭对话框并返回结果
}
// 在主窗口中调用对话框
void MainWindow::onOpenDialogClicked()
{
MyDialog dialog(this);
if (dialog.exec() == QDialog::Accepted) {
QString text = dialog.getText();
// 处理对话框返回的结果
}
}
```
在上面的示例中,对话框类 MyDialog 继承自 QDialog,实现了一个带有一个文本框和一个“OK”按钮的简单窗口。在主窗口中,通过创建 MyDialog 实例并调用 exec() 函数来显示对话框,并通过判断 exec() 返回值来处理对话框返回的结果。注意,当用户点击对话框上的“OK”按钮时,需要调用 accept() 函数来关闭对话框并返回结果。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)