QDialog的accept()和reject()介绍

    科技2022-07-10  244

    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(); }

    Processed: 0.010, SQL: 8