Qt获取QDialog自定义返回值,判断点击的按钮。QDialog返回信息

⌚Time: 2023-03-17 19:17:26

👨‍💻Author: Jack Ge

新建一个QDialog设计师界面类

pushButton的点击处理,点击后关闭对话框返回777


void Dialog::on_pushButton_clicked()

{

    done(777);

}

判断dialog返回值


    Dialog d;

    int ret = d.exec();

    if(ret == QDialog::Accepted){//点击了确认按钮

        qDebug()<<"acc";

    }else if(ret == QDialog::Rejected){//点击了取消按钮

        qDebug()<<"rej";

    }else if(ret == 777){//点击了pushButton

        qDebug()<<777;

    }

如何让QDialog携带返回信息?我的办法是制作一个结构体作为引用传入Dialog,Dialog运行结束后获取结构体的信息


struct MS{

    int a,b,c;

};

dialog类定义


class Dialog : public QDialog

{

    Q_OBJECT



public:

    explicit Dialog(MS &, QWidget *parent = nullptr);

    ~Dialog();



private slots:

    void on_pushButton_clicked();



private:

    Ui::Dialog *ui;

    MS &ms;//成员变量结构体

};

dialog的构造函数传入引用


Dialog::Dialog(MS &arg, QWidget *parent) :

    ms(arg),//初始化成员变量

    QDialog(parent),

    ui(new Ui::Dialog)

{

    ui->setupUi(this);

    ms.a = 1;

    ms.b = 2;

    ms.c = 3;

}

使用


    MS ms;

    Dialog d(ms);//传入结构体

    int ret = d.exec();

    qDebug()<<ms.a<<ms.b<<ms.c;//获取结构体信息