qt5信息提示框QMessageBox用法

information

QMessageBox::information(NULL, "Title", "Content",                          QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

这是比较常用的一种用法,效果如下:

information原型:

StandardButton QMessageBox::information(QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton) [static]
  • 第一个参数是父控件指针
  • 第二个参数是标题
  • 第三个参数是内容
  • 第四个参数是窗口里面要多少个按钮(默认为OK)
  • 第五个参数指定按下Enter时使用的按钮。(默认为NoButton,此时QMessageBox会自动选择合适的默认值。)

示例1:

QMessageBox::information(NULL, "Title", "Content");

此时第四第五为默认参数,效果:

示例2:

QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No);

此时效果(与图1相同):

示例三:

QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No|                             QMessageBox::Abort);

添加多个按钮用|运算符连接,效果:

按钮类型参考:

enum StandardButton {        // keep this in sync with QDialogButtonBox::StandardButton        NoButton           = 0x00000000,        Ok                 = 0x00000400,        Save               = 0x00000800,        SaveAll            = 0x00001000,        Open               = 0x00002000,        Yes                = 0x00004000,        YesToAll           = 0x00008000,        No                 = 0x00010000,        NoToAll            = 0x00020000,        Abort              = 0x00040000,        Retry              = 0x00080000,        Ignore             = 0x00100000,        Close              = 0x00200000,        Cancel             = 0x00400000,        Discard            = 0x00800000,        Help               = 0x01000000,        Apply              = 0x02000000,        Reset              = 0x04000000,        RestoreDefaults    = 0x08000000,

        FirstButton        = Ok,                // internal        LastButton         = RestoreDefaults,   // internal

        YesAll             = YesToAll,          // obsolete        NoAll              = NoToAll,           // obsolete

        Default            = 0x00000100,        // obsolete        Escape             = 0x00000200,        // obsolete        FlagMask           = 0x00000300,        // obsolete        ButtonMask         = ~FlagMask          // obsolete    };

会创建消息提示框后,我们怎么知道用户点了什么呢,看如下小例子:

QMessageBox:: StandardButton result= QMessageBox::information(NULL, "Title", "Content",QMessageBox::Yes|QMessageBox::No);switch (result){case QMessageBox::Yes:    qDebug()<<"Yes";    break;case QMessageBox::No:    qDebug()<<"NO";    break;default:    break;}

critical

critical adj. 关键的; 批评的,爱挑剔的; 严重的; 极重要的;

QMessageBox::critical(NULL, "critical", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

效果:

warning

QMessageBox::warning(NULL, "warning", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

效果:

question

QMessageBox::question(NULL, "question", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

效果:

about

原型:static void about(QWidget *parent, const QString &title, const QString &text);

QMessageBox::about(NULL, "About", "by hjwblog.com");

效果:

使用QMessageBox对象

如果是自己创建的QMessageBox对象,而不是用上面的static函数

示例1:

void MainWindow::on_pushButton_clicked(){    QMessageBox messageBox;    messageBox.show();}

这里在按钮的clicked槽里面创建了一个QMessageBox,但是这样会出现消息框一闪而过。这是因为c++局部变量的生命周期结束了,QMessageBox messageBox是函数局部变量,函数结束后它的生命周期也结束了。

示例2:

void MainWindow::on_pushButton_clicked(){    static QMessageBox messageBox;    messageBox.show();}

效果:

这样就好理解了,c++函数里面的static变量在函数结束时不会被回收。

示例3:

void MainWindow::on_pushButton_clicked(){    QMessageBox *messageBox=new QMessageBox;    messageBox->show();}

这样写也能显示提示框,但是这样会内存泄漏。

示例4:

前面的用法都不太完美,我们希望能方便的显示提示框并且获取用户点击了哪个按钮。因为QMessageBox继承QDialog,而QDialog有一个神奇的函数exec(),调用这个函数后,消息循环会在这个函数里面进行更新,而调用它的函数是被“暂停”的,就是说等用户点击按钮后,调用exec()的函数才继续执行。
直接上代码:

void MainWindow::on_pushButton_clicked(){    QMessageBox messageBox(QMessageBox::NoIcon,                           "退出", "你确定要退出吗?",                           QMessageBox::Yes | QMessageBox::No, NULL); ;    int result=messageBox.exec();

    switch (result)    {    case QMessageBox::Yes:        qDebug()<<"Yes";        close();        break;    case QMessageBox::No:        qDebug()<<"NO";        break;    default:        break;    }}

上面的代码实现了点击按钮退出,并且在退出前确定的功能。
exec()的返回值和前面的information()一样,是整数(information()是枚举)。可以通过返回值来确定用户点击了哪个按钮。

QMessageBox对象调用exec()函数能实现与前面的几个静态函数相似的功能。

原文地址:https://www.cnblogs.com/zhoug2020/p/10094855.html

时间: 2024-10-13 14:33:22

qt5信息提示框QMessageBox用法的相关文章

高级控件【安卓5】——信息提示框、对话框

Toast信息提示框 1 Button bt1=(Button)findViewById(R.id.Tbt01); 2 Button bt2=(Button)findViewById(R.id.Tbt02); 3 bt1.setOnClickListener(new OnClickListener() { 4 public void onClick(View v) { 5 Toast.makeText(Toast0.this, "按钮1短提示", 6 Toast.LENGTH_SHOR

信息提示框、对话框

Toast信息提示框 1Button bt1=(Button)findViewById(R.id.Tbt01); 2 Button bt2=(Button)findViewById(R.id.Tbt02); 3 bt1.setOnClickListener(new OnClickListener() { 4 public void onClick(View v) { 5 Toast.makeText(Toast0.this, "按钮1短提示", 6 Toast.LENGTH_SHORT

信息提示框

Android-Toast(信息提示框) <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_paren

[ExtJs5.1.0系列-第二天] 信息提示框组件&lt;Ext.MessageBox&gt;

在介绍ExtJs信息提示框组件之前,我们先来介绍一下ExtJs的组件配置. ExtJs组件通常有两种配置形式: (1) 用逗号分割的参数列表;  (2) 使用JSON对象作为组件提供配置信息.对于比较简单的配置一般采用逗号分隔的参数列表进行设置,对于较复杂的配置一般采用JSON对象的方式为组件提供配置信息. JSON简单介绍: JSON的全称是JavaScript Object Notation(JavaScript对象符号).JSON是一种结构化的,轻量级的,完全独立于语言的,基于文本的数据传

强大的响应式jQuery消息通知框和信息提示框插件

lobibox是一款功能非常强大的jQuery消息通知框和信息提示框插件.这个插件分为两个部分:消息通知框和信息提示框.它能非常好的结合Bootstrap使用. 信息提示框 lobibox的信息提示框可以是模态窗口,也可以不是模态窗口. 允许显示多条信息. 允许使用任何可用的CSS动画来显示和隐藏信息提示框. 信息提示框可以显示不同的颜色和图标. 可以设置为确认信息提示框. 可以设置为一行的prompt信息框.(可以使用任何HTML5的输入框类型来作为prompt) 也可以设置为多重prompt

Msgbox信息提示框

在程序运行过程中,常常需要弹出一些提示信息,与用户交流.需采用强制方式,将焦点移动到提示框上来,待用户处理完预先设置的对话之后,才能接着后面的操作. 这些提示框的使用都是本着协助用户更准确,更有效地与计算机交互的意义而设置的,是一个贴心的使用助手.一个有力的助手,就要能在繁杂处给予清晰的指引,在危险处提出警示,在关心的问题上及时给予回馈,在选择问题上要将不同选择的厉害关系讲明了,这样才能成为好助手.既然是协助,就又不能老在眼前晃,要在适当的时候适时地出现,出现得太多,影响效率,反而帮了倒忙.因为

asp.net 右下角弹出新提醒信息提示框

asp.net 开发信息系统,无论是OA或者是其它业务系统中,都会用到新信息提醒功能,特此将方案跟大家分享一下.先上一图给大家看一看: 优点:1).该新消息弹出提示框样式算是比较不错的,个人认为. 2).弹出框内的信息内容.提醒的个数.点击链接页面都封装在PopMessage.js中,你无须修改. 3).使用简单,你只要根据你的需要修改PopMessageHandler.ashx,获取你需要提醒的数据即可. 4).页面引用简单,易懂. 下面讲述实现过程: 1.在你的Web项目中根目录中添加Com

C# WPF里信息提示框的写法

在winform里信息框我们一般这样写 private void Button_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show ("要退出程序吗?", "退出程序",MessageBoxButton.YesNo ) == DialogResult.Yes) { this.Close(); } } 在WPF里DialogResult没有Yes或No的枚举取值了,所以应该这样写 private

第6章(2) Toast(信息提示框)

分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 Toast用于向用户显示一些帮助或者提示信息.前面我们已经多次用到它,这里只是系统地将其总结一下,并演示它的各种基本用法. 二.示例-- Demo01Toast 1.运行截图 2.添加Demo01_CustomToast.axml文件 在layout文件夹下添加该文件. <?xml version="1.0" encoding="utf-8"?> <LinearL