它是如何工作的

how it works QMessageBox

请告诉我哪里做错了?我的代码:

void deletetable::on_pb_dell_clicked()
{
    QMessageBox messageBox(QMessageBox::Question,
            tr("Sure want to quit?"), tr("Sure to quit?"), QMessageBox::Yes | QMessageBox::No, this);
    messageBox.setButtonText(QMessageBox::Yes, tr("Yes"));
    messageBox.setButtonText(QMessageBox::No, tr("No"));
    messageBox.exec();
    if (messageBox.QMessageBox::Yes) {
        emit deleteYear(year);
        close();
    } else {
        
    }
}

我的函数 deleteYear(year) 在任何条件下都有效,即如果我单击“否”,该函数仍然有效。 我从这里举了一个例子

messageBox.QMessageBox::Yes

只是访问 enum Yes,每次都会进行相同的评估。

您想捕获问题和查询的实际响应,例如:

auto response = QMessageBox::question(this, "Save", "Do you wish to save?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);


if (response == QMessageBox::Save) { ... }

请在此处查看 https://doc.qt.io/qt-5/qmessagebox.html#question 了解更多信息。


要保持​​与上面相同的格式,您可以获得 messageBox.result() 的响应,例如

if (messageBox.result() == QMessageBox::Yes) { ... }