我有子类QDialog来实现类似于QMessageBox的功能(我需要这个来允许定制)。它有一条短信和“确定”、“取消”按钮。我正在显示使用exec()使其阻塞的对话框。现在,当用户单击OK/Cancel时,如何返回true/false值?
我尝试将按钮连接到setResult(),然后,单击时返回结果值,但是单击按钮不会关闭对话框
返回值不正确。
下面是我写的代码。我认为我在exec/result部分是错的,但我不确定如何修复它。class MyMessageBox : public QDialog {
Q_OBJECT
private slots:
void onOKButtonClicked() { this->setResult(QDialog::Accepted); }
void onCancelButtonClicked() { this->setResult(QDialog::Rejected); }
public:
MyMessageBox(QMessageBox::Icon icon, const QString& title,
const QString& text, bool showCancelButton = true,
QWidget* parent = 0);
virtual void resizeEvent(QResizeEvent* e);
QDialog::DialogCode showYourself()
{
this->setWindowModality(Qt::ApplicationModal);
this->exec();
return static_cast<:dialogcode>(this->result());
}
};
用户将实例化该类并调用showYourself(),这将返回值并关闭(和删除)对话框。
我已经发布了部分代码。如果你需要更多,请告诉我,我会发布完整的版本。