一.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;

        }

        

QMessageBox用法及技巧-LMLPHP

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

QMessageBox用法及技巧-LMLPHP

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;;

    }

QMessageBox用法及技巧-LMLPHP

三.实用技巧

1.问题:

qt 主页面弹出一个页面A,然后页面A发出命令让主页面弹出一个弹框,但是弹框被挡在了页面A后面,无法操作

解决方法:

    QMessageBox::warning(this->pageA,tr("警告"), tr("模块未连接!"));

 设置this改为this->pageA,也就是让这个QMessageBox从pageA页面中弹出来。

03-02 00:05