标准对话框
也就是说,系统给我们提供了很多已经写好了的对话框,我们可以直接去使用它。其中,消息对话框 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()<<"选择的是取消按钮";
}
});