我已经进行了子类QDialog
化以实现类似于QMessageBox
(我需要这个来允许定制)的功能。它有一条短信和确定、取消按钮。我正在显示exec()
用于使其阻塞的对话框。现在,当用户单击 OK/Cancel 时,如何返回 true/false 值?
我尝试将按钮连接到setResult()
然后,单击时返回结果值,但是
- 单击按钮不会关闭对话框
- 返回值不正确。以下是我编写的代码。我认为我在执行/结果部分错了 - 但我不确定如何解决它。
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<QDialog::DialogCode>(this->result());
}
};
用户将实例化类并调用showYourself()
预期返回值并关闭(并删除)对话框。
我已经发布了部分代码。如果您需要更多信息,请告诉我,我将发布完整版本。