1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【QT】如何为自定义的Dialog添加确定取消按钮 可以使用QDialogButtonBox类

【QT】如何为自定义的Dialog添加确定取消按钮 可以使用QDialogButtonBox类

时间:2019-12-08 07:10:58

相关推荐

【QT】如何为自定义的Dialog添加确定取消按钮 可以使用QDialogButtonBox类

如果你想在MainWindo界面中得到Dialog中按下确定键时的一些业务,例如,在Mainwindow界面新建项目,弹出新建项目的dialog,然后将新建项目界面获得的信息显示到MainWindow界面中,此时,你就需要在Dialog中发送一个信号,即

//Dialog.h//省略其他代码//...signal:emit signalOkClicked;

//Dialog.cpp //省略其他代码//...connect(btnOK, &QPushButton::clicked, this, &Dialoh::signalOkClicked);

然后,你在MainWindow中接收此信号即可,在槽函数slotDiaOkClicked中实现自己的业务

//MainWindow.cpp//...省略一些代码Dialog* dialog = new Dialog(this);connect(Dialog, &Dialog::signalOkClicked, this, &Mainwindow::slotDiaOkClicked)

这样写的话就是感觉比较繁琐,需要信号传信号,这边接收再写槽函数。

这时可以使用QDialogButtonBox类来添加按钮,而不是直接使用QPushButton类来添加按钮。

//Dialog.cpp//其他布局省略//...//添加按钮QDialogButtonBox* btnBox = new QDialogButtonBox(Qt::Horizontal, this);QPushButton* btnOk = btnBox->addButton(tr("确定"), QDialogButtonBox::AcceptRole);QPushButton* btnCancel = btnBox->addButton(tr("取消"), QDialogButtonBox::RejectRole);btnOk->setMinimumHeight(28);btnOk->setMinimumWidth(60);btnCancel->setMinimumHeight(28);btnCancel->setMinimumWidth(60);

后面加角色(QDialogButtonBox::AcceptRole)的作用就是为了在外面调用exec()来确定QDialog的返回结果

QDialogButtonBox在添加按钮时可以为按钮添加Role角色,这个非常重要,这样的话在外面调用时,直接使用if(dialog->exec()== QDialog::Accepted)来判断dialog按下的是哪个按钮,而不用connect再传递一个信号给外面,也就不用接收确定按钮的connect函数和槽函数。

//MainWindow.cppDialog* dialog = new Dialog(this);if(dialog->exec()== QDialog::Accepted){//表示按下的是确定键//实现自己的业务//...}

注意:如果使用这种方式,那么dialog不能设置setAttribute(Qt::WA_DeleteOnClose);窗口销毁属性,窗口释放会导致发送不了信号。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。