QT之GUI学习笔记(十二)---QMessageBox

原文地址http://devbean.blog.51cto.com/448512/217694

一 概述

1.QMessageBox用于显示基本的提示信息。
2.QMessageBox有5种类型:
information;critical;warning;question;about;

二.代码

1.information类
在mainwindow.cpp中将open函数的代码进行修改

void MainWindow::open(){
    QMessageBox::information(NULL, "Title", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

截图如下:
QMessageBox::information
这是一个静态(static)函数,QMessageBox::information的API用法如下:

StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton)

这个函数用于打开一个信息窗口,同时,指定标题,文本和父窗口。
2.critical类

void MainWindow::open(){
    QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

运行截图:
QMessageBox::critical
3.warning类型

void MainWindow::open(){
   QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

运行结果如下:
QMessageBox::warning
4.question类型

void MainWindow::open(){
    QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

运行结果如下
QMessageBox::question
5.about类型

void MainWindow::open(){
    QMessageBox::about(NULL, "About", "About this application");
}

运行截图:
QMessageBox::about

三 .知识点总结

1.在QmessageBox::Button中有所有的按钮类型
QMessageBox::Button
2.QMessageBox::information

static StandardButton QMessageBox::information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );

(1)此函数是静态类型(static),因而可以直接使用类名直接访问
(2)
第一个参数parent:说明父组件
第二个参数title :对话框的标题
第三个参数text:是对话框显示的内容
第四个参数buttons:声明对话框放置的按钮,默认是只放置一个OK按钮,这个参数可以使用或运算。
例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox::Yes | QMessageBox::No
第五个参数defaultButton:默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。
3.QmessageBox对话框的文本信息可以支持html函数解析。

QMessageBox::about(NULL, "About", "About this <font color='red'>application</font>");


4.QmessageBox支持自定义图片
(1)使用自定义图片:不能使用这几个static的函数了,而是要我们自己定义一个QMessagebox来使用.

void MainWindow::open(){
    //自定义对话框,设置上面的图片
    QMessageBox message(QMessageBox::NoIcon, "defined Title", "Content with icon.");
    message.setIconPixmap(QPixmap(":/PICTURE/panda.ico"));
    message.exec();
}

运行截图:
defined Title
(2)如果不使用qrc中的图片资源,此时的代码为

void MainWindow::open(){
    QMessageBox message(QMessageBox::NoIcon, "defined Title", "Content with icon.");
    message.setIconPixmap(QPixmap("./p.png"));
    message.exec();
}

这里写图片描述
需要注意图片路径:

./p.png

这个意思是加载当前目录下的p.png图片
我们在程序中定义的相对路径都是要相对于运行时的.exe文件的地址的。比如我们写”icon.png”,意思是是在.exe的当前目录下寻找一个”icon.png”的文件
(3) 使用exec,而不用show.
原因:
这是一个模态对话框,需要有它自己的事件循环,否则的话,我们的对话框会一闪而过
(4)注意图片格式
因为Qt内置的处理图片格式是png,所以使用png格式的图片不需要额外操作。但是使用jpeg格式的图片在开发的时候没有问题,但是部署的时候需要使用插件来支持。
5.如何处理对话框的交互
QMessageBox类的时候有两种交互方式:1.使用static函数 2.使用构造函数
(1)static方式
原理:
static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对用户的操作做出相应。

void MainWindow::open(){
    QMessageBox::StandardButton rb = QMessageBox::question(NULL, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    if(rb == QMessageBox::Yes)
    {
            QMessageBox::aboutQt(NULL, "About Qt");
    }
}

(2)使用构造函数

void MainWindow::open(){
    QMessageBox message(QMessageBox::NoIcon, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, NULL);
    if(message.exec() == QMessageBox::Yes)
    {
            QMessageBox::aboutQt(NULL, "About Qt");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值