【发布时间】:2012-09-10 08:25:18
【问题描述】:
我对@987654321@ 进行了子类化,以实现类似于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(),它预计将返回值并关闭(并删除)对话框。
我已经发布了部分代码。如果您需要更多信息,请告诉我,我会发布完整版本。
【问题讨论】: