一.QMessageBox是什么?
QMessageBox类为用户提供了主要的警告信息,用户可以根据需求选择需要的响应;
QMessageBox 还提供了一些常用的按钮,例如"确定"、"取消"、"是"、"否"等,并可以根据需要自定义按钮的文本和数量。通过设置不同的标志和参数,还可以控制消息框的样式、图标和默认按钮等。
二.用法与代码示例
1.简单应用
QMessageBox::information(this, "警告", "请检查网络连接!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
第一个参数是父控件指针
第二个参数是标题
第三个参数是内容
第四个参数是窗口里面要多少个按钮(默认为OK)
第五个参数指定按下Enter时使用的按钮。(默认为NoButton,此时QMessageBox会自动选择合适的默认值。)
2.判断返回值方法一
switch(QMessageBox::information(this,"Warning",tr("Save changes to document?"),
QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save))
{
case QMessageBox::Save:
qDebug() << " Warning button / Save " << endl;;
break;
case QMessageBox::Discard:
qDebug() << " Warning button / Discard " << endl;;
break;
case QMessageBox::Cancel:
qDebug() << " Warning button / Cancel " << endl;;
break;
default:
break;
}
3.判断返回值方法二及设置图标和logo
QMessageBox msgBox;
msgBox.setIcon(QMessageBox::Warning);
msgBox.setText("This is a message box with a warning icon.");
msgBox.setWindowTitle("Warning Example");
msgBox.setStandardButtons(QMessageBox::Ok|QMessageBox::Yes);
msgBox.setWindowIcon(QIcon("./checked2.png")); //设置title logo
msgBox.setIconPixmap(QPixmap("./voloff.png"));//可以设置告警图标
int ret = msgBox.exec();
qDebug()<<ret; //返回值为宏值 :QMessageBox::Ok|QMessageBox::Yes
4.自定义button
QMessageBox BOX;//实例化消息盒对象
BOX.setWindowTitle("退出");//设置消息对话的标题
BOX.setText("你确定要退出吗");//设置消息盒的提示内容
BOX.addButton("确认",QMessageBox::AcceptRole);//自定义按钮
BOX.addButton("取消",QMessageBox::RejectRole);//自定义按钮
int ret=BOX.exec();//显示消息对话框
qDebug()<<ret; //返回值为宏值QMessageBox::AcceptRole
if(ret==0)
{
qDebug() << " QMessageBox::AcceptRole " << endl;;
}
else if(ret==1)
{
qDebug() << " QMessageBox::RejectRole " << endl;;
}
三.实用技巧
1.问题:
qt 主页面弹出一个页面A,然后页面A发出命令让主页面弹出一个弹框,但是弹框被挡在了页面A后面,无法操作
解决方法:
QMessageBox::warning(this->pageA,tr("警告"), tr("模块未连接!"));
设置this改为this->pageA,也就是让这个QMessageBox从pageA页面中弹出来。