Qt学习笔记(十一):消息对话框


QMessageBox 用于显示消息提示。我们一般会使用其提供的几个 static 函数:

1、显示关于对话框:

    // 关于对话框:该对话框只有一个 OK 按钮
    // 参数1:父对象;
    // 参数2:对话框标题;
    // 参数3:对话框内容;
    QMessageBox::about(this, "关于对话框", "服务暂停,请稍后再试!");

结果:

2、显示关于 Qt 对话框。该对话框用于显示有关 Qt 的信息:

    // 显示关于 Qt 对话框。该对话框用于显示有关 Qt 的信息。
    // 参数1:父对象;
    // 参数2:对话框标题;
    QMessageBox::aboutQt(this, "关于对话框");

结果:

3、显示严重错误对话框:

    // 显示严重错误对话框。这个对话框将显示一个红色的错误符号。我们可以通过 参数4 指明其
    // 显示的按钮,默认情况下只有一个 Ok 按钮,我们可以使用 StandardButtons 类型指定多种按钮。
    // 该方法有一个返回值,用于确定用户点击的是哪一个按钮。
    // 参数1:父对象;
    // 参数2:对话框标题;
    // 参数3:对话框内容;
    // 参数4:关联的按键类型,可以使用或(|)运算符,指定对话框应该出现的按钮;
    // 参数5:指定默认选择的按钮(只能选择在 参数4 中列出的按钮类型);可以省略,默认选择第一个按钮。
    int result = QMessageBox::critical(this, "错误对话框", "保存信息出错,是否继续执行?", 
                          QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "点击了 OK 按钮";        
    }
    else
    {
        qDebug() << "点击了 Cancel 按钮";    
    }

 结果:

4、显示普通信息对话框:这个对话框将显示一个蓝色的信息符号。用法和 critical 一样:

    int result = QMessageBox::information(this, "信息对话框", "保存信息出错,是否继续执行?", 
                          QMessageBox::Ok | QMessageBox::Cancel);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "点击了 OK 按钮";        
    }
    else
    {
        qDebug() << "点击了 Cancel 按钮";    
    }

结果:

5、显示询问对话框:和 critical 用法一样,不同之处是该对话框显示一个问号图标,并且默认显示的按钮是 Yes 和 No:

    int result = QMessageBox::question(this, "询问对话框", "是否保存文件?");
    if (result == QMessageBox::Yes)
    {
        qDebug() << "点击了 Yes 按钮";        
    }
    else if (result == QMessageBox::No)
    {
        qDebug() << "点击了 No 按钮";    
    }

 结果:

6、显示警告对话框:用法和 critical 一样,不同之处是该对话框显示一个感叹号图标:

    int result = QMessageBox::warning(this, "警告对话框", "保存信息出错,是否继续执行?", 
                                      QMessageBox::Ok | QMessageBox::Cancel);
    if (result == QMessageBox::Ok)
    {
        qDebug() << "点击了 Ok 按钮";        
    }
    else if (result == QMessageBox::Cancel)
    {
        qDebug() << "点击了 Cancel 按钮";    
    }

结果:

7、自定义消息框:

    // 自定义消息框
    QMessageBox msgBox;
    msgBox.setWindowTitle("自定义消息框");             // 设置消息框标题
    msgBox.setText("文档已被修改!");                  // 设置消息框显示的内容
    msgBox.setInformativeText("是否保存修改的内容?");  // 设置简单的说明文字
    msgBox.setDetailedText("详细内容...");             // 设置详细内容
    msgBox.setStandardButtons(QMessageBox::Save       
                              | QMessageBox::Discard 
                              | QMessageBox::Cancel); // 设置消息框显示的按钮类型 
    msgBox.setDefaultButton(QMessageBox::Save);       // 设置默认选择的按钮
    
    // 执行消息框(模态对话框,阻塞)
    int ret = msgBox.exec();
    switch (ret) 
    {
        case QMessageBox::Save:
        {
            QString str = msgBox.detailedText();    // 获取详细内容
            qDebug() << "保存文本!" << str.toUtf8().data();
            break;
        }
        case QMessageBox::Discard:
        {
            qDebug() << "放弃更改,继续执行!";
            break;
        }
        case QMessageBox::Cancel:
        {
            qDebug() << "取消更改,结束程序!";
            break;
        }
    }

 结果:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值