Qt -- 20标准对话框和消息对话框

本文详细介绍了C++中QMessageBox消息对话框的使用,包括四种基本对话框类型(critical, information, question, warning)的实例,静态成员变量访问方式,以及自定义按键行为。通过实例演示和参数解读,帮助开发者理解和运用这些对话框进行用户交互设计。
摘要由CSDN通过智能技术生成

标准对话框

在这里插入图片描述
也就是说,系统给我们提供了很多已经写好了的对话框,我们可以直接去使用它。其中,消息对话框 QMessageBox 是最常用到的,下面通过帮助文档来看一看。

使用之前要添加头文件 #include <QMessageBox>
在这里插入图片描述
一般它用于哪些地方呢?
在这里插入图片描述
如果要使用上面提到的四类,需要用到 QMessageBox 对外提供的接口。同样在帮助文档中能够找到,如下图所示。
在这里插入图片描述
从上图中可以看到,这四个消息对话框接口被修饰为 静态 public 权限,

复习C++知识点:静态成员变量的访问方式:

1、静态成员变量(函数)可以通过类名和对象名来访问,而普通成员变量只能通过对象来访问。

2、静态成员函数只能访问静态成员变量,不能访问非静态成员变量。

3、访问权限:被 private 修饰的静态成员变量,在类外不管是通过类名还是对象名都无法访问。在类内可以被访问。

这里,

1、我们先来实现点击新建按钮,触发用于报告关键性消息的消息对话框。

代码如下。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //点击新建按钮,弹出一个对话框
    connect(ui->actionNew,&QAction::triggered,[=](){
        //错误对话框
        QMessageBox::critical(this,"critical","错误");
    });
}

演示效果如下:
在这里插入图片描述
从上图可以看出,我们不能对其他窗口进行操作,所以创建出来的这个对话框是模态对话框。

2、再来实现其他类型的消息对话框。(只需要把相应代码换一下就好了。)

 //信息对话框
 QMessageBox::information(this,"info","错误");

运行结果如下:
在这里插入图片描述

//提问对话框
QMessageBox::question(this,"info","提问");

运行结果如下:
在这里插入图片描述

//警告对话框
QMessageBox::warning(this,"warning","警告");

运行结果如下:
在这里插入图片描述
需要注意,上面的按键类型是可以通过修改参数来进行修改的,我们来查看下帮助文档。
在这里插入图片描述
比如这里将提问对话框的按钮修改为保存和取消,代码如下。

QMessageBox::question(this,"info","提问",QMessageBox::Save|QMessageBox::Cancel);

运行效果如下:
在这里插入图片描述
下面,还有一个问题就是,以上图为例,假设我既不点 Save 按钮,也不点 Cancel 按钮,而是直接按回车键,那应该选中的是哪一个。

答:是 Save 按钮,因为Save被蓝色框选中。

那如何能修改初始选中(选择 Cancel),这就要用到第五个参数了。

QMessageBox::question(this,"info","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel);

运行代码如下:
在这里插入图片描述
总结以下,上面接口函数的几个参数。

参数1:父亲
参数2:消息对话框的标题
参数3:消息对话框的提示内容
参数4:按键类型
参数5:默认关联回车按键。

除此之外,这几个接口函数的返回值类型为 QMessageBox::StandardButton 类型,也就是说,用户点击了哪个按钮,就会返回相应的按钮值。比如说用户点击的是保存按钮,就会返回 QMessageBox::Save。

从而,我们就可以根据用户的选择来做进一步的操作,举例如下。
当我们选择 Save 按钮时,应用程序输出调试信息 “选择的是保存按钮”,否则输出 “选择的是取消按钮”。

代码如下:

//点击新建按钮,弹出一个对话框
connect(ui->actionNew,&QAction::triggered,[=](){
    //提问对话框
    if(QMessageBox::Save == QMessageBox::question(this,"info","提问",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel))
    {
       qDebug()<<"选择的是保存按钮";
    }
    else
    {
        qDebug()<<"选择的是取消按钮";
    }
});

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xuechanba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值