0
点赞
收藏
分享

微信扫一扫

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

ITWYY 2022-02-04 阅读 223

标准对话框

在这里插入图片描述
也就是说,系统给我们提供了很多已经写好了的对话框,我们可以直接去使用它。其中,消息对话框 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 条评论