accept()和reject() 这两个槽函数 都会和close() 一样关闭dialog
但是 accept()关闭后 返回了Dialog::Accepted
但是 reject()关闭后 返回了Dialog::Rejected
这样当我们需要 知道 dialog 是哪个按钮关闭的时候,就可以调用这连个槽;
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
Dialog dia;
QPushButton btn(&dia);
btn.setText("accept");
btn.move(20,10);
//会关闭 dia 但是返回的值是 1
connect(&btn,SIGNAL(clicked()),&dia,SLOT(accept()));
QPushButton btn1(&dia);
btn1.setText("reject");
btn1.move(50,50);
//会关闭 dia 但是返回的值是 0
connect(&btn1,SIGNAL(clicked()),&dia,SLOT(reject()));
int rec= dia.exec(); // dia退出的时候就会被销毁;
if(rec==Dialog::Accepted){
qDebug()<< "rec=" << rec << " "<< "accept";
}else if(rec==Dialog::Rejected) {
qDebug()<< "rec=" << rec << " "<< "reject";
}
}
void MainWindow::on_pushButton_2_clicked()
{
Dialog* dia=new Dialog(this);//指定了父 当父销毁的时候 这个dialog 才会被销毁 不指定父 就会 内存泄漏
dia->setModal(true); // 默认是非模态 设置了model 才是模态
dia->show();
}