Qt——QMessageBox类详解

QMessageBox类提供了一个模式对话框,用于通知用户或询问用户问题并接收答案。

我们先来看下QMessageBox::information函数的使用:

其原型:

[static] int QMessageBox::information(QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0)

parent是父组件指针,title标题,text是文本文字,button0、1和 2是三个按钮,按钮参数没定义的话,默认就只有一个按钮。最多支持三个按钮。例如:

void MainWindow::on_pushButton_clicked(bool checked)
{
    QString pbtn_name;
    int k;
    pbtn_name=ui->pushButton->metaObject()->className();   //获取按钮对象的名字

    k=QMessageBox::information(this,"title","hello!"+pbtn_name,QMessageBox::Ok,QMessageBox::Cancel,QMessageBox::Yes);  //ok,cancle,yes三个按钮
    if(k==QMessageBox::Cancel)                                               //判断返回的按钮参数
    QMessageBox::information(this,"pramater return","Cancle!");
    else if(k==QMessageBox::Ok)
    QMessageBox::information(this,"pramater return","OK!");
    else if(k==QMessageBox::Yes)
    QMessageBox::information(this,"pramater return","YES!");

}

这段代码是pushbutton按钮的槽函数,如果单击pushbutton按钮,将弹出一个提示框,用了一个metaObject函数来返回classname,也就是pussbutton,三个按钮被按下,将判断是哪个按钮被按下,然后再弹出一个对话框告诉我们是哪个按钮被按下。

运行截图:

按钮按下:

单击ok:

若是自定义按钮文字的话,我们看看函数原型:

[static] int QMessageBox::information(QWidget *parent, const QString &title, const QString &text, const QString &button0Text, const QString &button1Text = QString(), const QString &button2Text = QString(), int defaultButtonNumber = 0, int escapeButtonNumber = -1)

这是一个重载函数,显示带有给定标题和文本以及一个、两个或三个按钮的信息消息框,返回已单击按钮的索引(0、1、 2)。

button0Text是第一个按钮的文本,是可选的。如果未提供button0Text,将使用“确定”(翻译) buttn1Text是第二个按钮,同上。defaultButtonNumber是默认按钮的索引,比如设为0,那么焦点将默认在第一个按钮,escapeButtonNumber是escape按钮的索引,按esc与单击此按钮相同,它默认为-1,可修改,消息框是应用程序模式对话框。

例子:

void MainWindow::on_pushButton_clicked(bool checked)
{
    QString pbtn_name;
    int k;
    pbtn_name=ui->pushButton->metaObject()->className();   //获取按钮对象的名字

    k=QMessageBox::information(this,"title","hello!"+pbtn_name,"确定","取消","好的",0,1);  //ok,cancle,yes三个按钮
    if(k==0)                                               //判断返回的按钮参数
    QMessageBox::information(this,"pramater return","确定!");
    else if(k==1)
    QMessageBox::information(this,"pramater return","取消!");
    else if(k==2)
    QMessageBox::information(this,"pramater return","好的!");

}

运行截图:

可以看到,笔者设定的默认按钮的索引为0,所以消息框弹出时焦点默认在 确定 按钮上,escape按钮的索引设定为1,则按下esc键与按下 取消 按键的情况是一样的。

好的,information函数的我们了解的足够多了,QMessageBox类里还有几个和它一样用法的函数:

[static] int QMessageBox::question(QWidget *parent, const QString &title, const QString &text, int button0, int button1 = 0, int button2 = 0)

[static] int QMessageBox::question(QWidget *parent, const QString &title, const QString &text, const QString &button0Text, const QString &button1Text = QString(), const QString &button2Text = QString(), int defaultButtonNumber = 0, int escapeButtonNumber = -1)

[static] int QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, int button0, int button1, int button2 = 0)

[static] int QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, const QString &button0Text, const QString &button1Text = QString(), const QString &button2Text = QString(), int defaultButtonNumber = 0, int escapeButtonNumber = -1)

[static] int QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, int button0, int button1, int button2 = 0)

[static] int QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, const QString &button0Text, const QString &button1Text = QString(), const QString &button2Text = QString(), int defaultButtonNumber = 0, int escapeButtonNumber = -1)

运行截图:

warning函数:

critical函数:

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值