我在理解 QMessage 框的功能如何工作时遇到了一些困难。在这里,我创建了一个带有按钮的简单对话框。
点击那个按钮。它将显示一个 QMessageBox。
下面我附上了代码。
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";
}
}
这里我附上了终端的输出。
我首先选择“Save Changes”btn,然后选择“Discard Changes”btn,MessageBox 窗口的 X 按钮,得到了上述输出。
在这里,我注意到在单击“放弃更改”btn 时,正在执行 Windows 相同代码块(否则如果块)的 X 按钮。
我的疑问是
- 为什么会这样?在内部它们是相同的还是调用相同的方法?
- 如何在单击 X 按钮时执行 else 块中的代码?