对话框分为两种:
1.模态对话框:应用程序没有关闭前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭,exec()
2.非模态对话框:当被打开时,用户既可以选择和对话框进行交互,也可以选择同应用程序的其他窗口交互.show()
对话框通常有两种消息,确定和取消
确认动作:
槽函数:void accept();
信号:void accepted();
取消动作:
槽函数:void reject();
信号:void rejected();
返回消息
QDialog::Accepted 1
QDialog::Rejected 0
例子:使用buttonbox
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
QWidget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "dialog.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QDialog* pDlg;
};
#endif // WIDGET_H
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
pDlg = new Dialog(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
qDebug()<<pDlg->exec();
}
再来一个自定义按钮
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_okButton_clicked();
void on_cancelButton_clicked();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "dialog.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_pushButton_clicked();
private:
Ui::Widget *ui;
QDialog* pDlg;
};
#endif // WIDGET_H
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_okButton_clicked()
{
accept();
/*
[virtual slot] void QDialog::accept()
Hides the modal dialog and sets the result code to Accepted.
*/
}
void Dialog::on_cancelButton_clicked()
{
reject();
/*
[virtual slot] void QDialog::reject()
Hides the modal dialog and sets the result code to Rejected.
See also accept() and done().
*/
}
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
pDlg = new Dialog(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
qDebug()<<pDlg->exec();
}