📅  最后修改于: 2023-12-03 15:34:34.380000             🧑  作者: Mango
在 Qt 中,弹出窗口是一个非常常见的需求,可以通过 QMessageBox
类实现。该类提供了多种弹出窗口的风格,例如信息框、警告框、错误框、问题框等。
信息框用于显示一些信息,例如操作成功、保存成功等提示。可以通过以下代码实现:
QMessageBox::information(parent, "Title", "Message");
parent
: 父窗口,可以为 nullptr
。"Title"
: 弹出窗口的标题。"Message"
: 弹出窗口的信息。警告框用于警示用户操作可能会导致的问题,例如未保存数据就关闭。可以通过以下代码实现:
QMessageBox::warning(parent, "Title", "Message");
parent
: 父窗口,可以为 nullptr
。"Title"
: 弹出窗口的标题。"Message"
: 弹出窗口的信息。错误框用于显示错误信息,例如文件读取失败。可以通过以下代码实现:
QMessageBox::critical(parent, "Title", "Message");
parent
: 父窗口,可以为 nullptr
。"Title"
: 弹出窗口的标题。"Message"
: 弹出窗口的信息。问题框用于询问用户操作是否继续执行,例如是否保存修改。可以通过以下代码实现:
QMessageBox::question(parent, "Title", "Message", QMessageBox::Yes | QMessageBox::No);
parent
: 父窗口,可以为 nullptr
。"Title"
: 弹出窗口的标题。"Message"
: 弹出窗口的信息。QMessageBox::Yes | QMessageBox::No
: 弹出窗口的按钮,可以改为其他值,例如 QMessageBox::Ok | QMessageBox::Cancel
。以上四种方式的按钮都是默认的,如果需要自定义按钮,可以通过 QMessageBox::addButton()
方法实现。例如:
QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
QPushButton *dontSaveButton = msgBox.addButton(tr("Don't Save"), QMessageBox::NoRole);
msgBox.exec();
if (msgBox.clickedButton() == QMessageBox::Save) {
// Save was clicked
} else if (msgBox.clickedButton() == QMessageBox::Discard) {
// Don't Save was clicked
} else if (msgBox.clickedButton() == dontSaveButton) {
// Cancel was clicked
}
以上代码创建了一个自定义的弹出窗口,包含保存、丢弃和取消三个按钮,以及一个 "Don't Save" 按钮,不同的按钮对应不同的操作。