QMessageBox用法及技巧

一.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页面中弹出来。

  • 38
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI+程序员在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值