QMessageBox是qt弹框类,用于显示消息、警告、错误等信息。可以根据需要生成各式各样的弹框。
一般常用的用法是 QMessageBox的information弹框 如下所示:
QMessageBox::information(nullptr,"Title","Content",
QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
information原理:
StandardButton QMessageBox::information
(QWidget * parent, const QString & title,
const QString & text, StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton)
- 第一个参数是父控件指针
- 第二个参数是标题
- 第三个参数是内容
- 第四个参数是窗口里面要多少个按钮(默认为OK)
- 第五个参数指定按下Enter时使用的按钮。(默认为NoButton,此时QMessageBox会自动选择合适的默认值。)
但一般我们创建information弹框是告知用户的,所以一般只有ok按钮或者yes按钮
qt自带了弹框的icon,如下图所示
函数原型分别为:
1. 显示询问框
QMessageBox::question(parent, title, text, QMessageBox::Yes | QMessageBox::No);
2. 显示信息框
QMessageBox::information(parent, title, text);
3. 显示警告框
QMessageBox::warning(parent, title, text);
4. 显示错误框
QMessageBox::critical(parent, title, text);
实际我们会根据用户的选择进行相应的操作,这时就需要返回一个值:
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);
int ret = msgBox.exec();
如果想加上qt默认icon可以将上述代码更改成:
int ret = QMessageBox::warning(this, tr("QMessageBoxTest"),
tr("The document has been modified.\n"
"Do you want to save your changes?"),
QMessageBox::Save | QMessageBox::Discard
| QMessageBox::Cancel,
QMessageBox::Save);
若还需要其他样式可写样式表
exec()槽返回被单击按钮的StandarButtons值
switch (ret) {
case QMessageBox::Save:
// Save was clicked
break;
case QMessageBox::Discard:
// Don't Save was clicked
break;
case QMessageBox::Cancel:
// Cancel was clicked
break;
default:
// should never be reached
break;
}
再根据需要写相对应的代码
希望我的学习总结对你有帮助!♥