消息框上的 X 按钮与框的取消按钮

我在理解 QMessage 框的功能如何工作时遇到了一些困难。在这里,我创建了一个带有按钮的简单对话框。

消息框上的 X 按钮与框的取消按钮

点击那个按钮。它将显示一个 QMessageBox。

消息框上的 X 按钮与框的取消按钮

下面我附上了代码。


void dialog::on_pushButton_clicked()
{
    QMessageBox box;
    box.setText("Choose An Option");
    QPushButton *pDiscardChangesBtn = box.addButton("Discard Changes",QMessageBox::RejectRole);
    QPushButton *pSaveChangesBtn = box.addButton("Save Changes",QMessageBox::acceptRole);

    box.setDefaultButton(pSaveChangesBtn);
    box.exec();

    if(box.clickedButton() == pSaveChangesBtn) {
        qInfo() << "Save Changes Button Clicked";
    }
    else if(box.clickedButton() == pDiscardChangesBtn) {
        qInfo() << "Discard Changes Button clicked";
    }
    else
    {
        qInfo() << "Closed";
    }


}

这里我附上了终端的输出。

消息框上的 X 按钮与框的取消按钮

我首先选择“Save Changes”btn,然后选择“Discard Changes”btn,MessageBox 窗口的 X 按钮,得到了上述输出。

在这里,我注意到在单击“放弃更改”btn 时,正在执行 Windows 相同代码块(否则如果块)的 X 按钮。

我的疑问是

  1. 为什么会这样?在内部它们是相同的还是调用相同的方法?
  2. 如何在单击 X 按钮时执行 else 块中的代码?
jsyzjzg 回答:消息框上的 X 按钮与框的取消按钮

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/832504.html

大家都在问