Qt:31---QMessageBox消息对话框

消息对话框的两种通途:

  • ①用于简单的信息提示,并无其他所用,不利用对话框的返回值
  • ②用于确认选择对话框,对对话框的返回值进行利用

函数原型

  • 由warning()、information()、critical()、about()这几个函数组成,这几个函数的参数与使用方法都是相同的,只是图标显示不一样而已,下面以warning()函数为例

函数原型一:

int QMessageBox::warning(
QWidget *parent, const QString &title, const QString &text, 
int button0, int button1, int button2 = 0
)
  • parent参数:父窗口
  • title参数:消息对话框标题
  • text参数:消息对话框的内容
  • button0、button1、button2参数:按钮的退出类型,可选择以下的类型(从左至右都可以缺省,如果都缺省,则默认为QMessageBox::Ok

  • 返回值:为你选择的退出按钮类型的值(就是上图中的按钮常量值)

函数原型二:

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)
  • parent、title、text参数:与上面的相同
  • button0Text、button1Text、button2Text参数:为退出的选择按钮,可以自定义按钮文本(不过都可以缺省,都缺省之后为QMessageBox::Ok)。如果都设置了button的序号为0、1、2
  • defaultButtonNumber参数:为消息对话框显示之后,光标默认停留在前面那个button上面(可以选择为前面的button序号,如果缺省默认为0)
  • 返回值:为你选择的退出按钮类型的值(就是button的序号

一、简单的信息提示

  • 概念:消息对话框QMessageBox用于显示提示、警告、错误等信息,或进行确认选择,并不关心对话框的返回值

演示案例

//Critical按钮
void Widget::on_btnMsgCritical_clicked()
{
    QString dlgTitle=QStringLiteral("critical消息框");
    QString strInfo=QStringLiteral("有不明程序访问网络");
    QMessageBox::warning(this,dlgTitle,strInfo,
            QStringLiteral("确定"),QStringLiteral("取消"),QStringLiteral("退出"),2);
}

//Informatio按钮
void Widget::on_btnMsgInformation_clicked()
{
    QString dlgTitle=QStringLiteral("information消息框");
    QString strInfo=QStringLiteral("文件已经打开,字体大小已设置");
    QMessageBox::warning(this,dlgTitle,strInfo,
        QMessageBox::Yes,QMessageBox::No,QMessageBox::Cancel);
}

//Warnin按钮
void Widget::on_btnMsgWarning_clicked()
{
    QString dlgTitle=QStringLiteral("warning消息框");
    QString strInfo=QStringLiteral("文件内容已经被修改");
    QMessageBox::warning(this,dlgTitle,strInfo);
}

//About按钮
void Widget::on_btnMsgAbout_clicked()
{
    QString dlgTitle=QStringLiteral("aboutg消息框");
    QString strInfo=QStringLiteral("我开发的数据查看软件 V1.0\n保留所有版权");
    QMessageBox::warning(this,dlgTitle,strInfo);
}

二、用做确认选择对话框

  • 根据对话框的返回值进行不同的操作
  • 对话框的返回值类型可以用QMessageBox::StandardButton表示
  • 注意:参数4可以用逻辑或的方式

演示案例

void Widget::on_btnMsgQuestion_clicked()
{
    QString dlgTitle=QStringLiteral("Question消息框");
    QString strInfo=QStringLiteral("文件已被修改,是否保存修改");
    QMessageBox::StandardButton defaultBtn=QMessageBox::NoButton;
    QMessageBox::StandardButton result;
    result=QMessageBox::question(this,dlgTitle,strInfo,
                                QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel,defaultBtn);
    if(result==QMessageBox::Yes)
        ui->plainTextEdit->appendPlainText(QStringLiteral("Yes被选择!"));
    else if(result==QMessageBox::No)
        ui->plainTextEdit->appendPlainText(QStringLiteral("No被选择!"));
    else if(result==QMessageBox::Cancel)
        ui->plainTextEdit->appendPlainText(QStringLiteral("Cancel被选择!"));
    else
        ui->plainTextEdit->appendPlainText(QStringLiteral("无选择!"));
}

三、自定义对话框点击按钮文本

演示案例

int result;
QMessageBox *msgbox = new QMessageBox();
msgbox->setText("选择支付方式"); //设置文本
msgbox->setStandardButtons(QMessageBox::Yes|QMessageBox::No);//设置对话框有几个按钮

//设置按钮文本
msgbox->button(QMessageBox::Yes)->setText("支付宝");
msgbox->button(QMessageBox::No)->setText("微信");

result=msgbox->exec();//执行对话框,并获取返回值

//下面根据QMessageBox的返回值显示不同的图片
QLabel* label;
if(result==QMessageBox::Yes){
    QString filename(":/pictures/src/zhi.png");
    QImage* img=new QImage;
    if((img->load(filename))) //加载图像
    {
        label=new QLabel();
        label->setPixmap(QPixmap::fromImage(*img));
        label->setScaledContents(true);
        label->setMaximumSize(547,662);
        label->show();
    }
}
else if(result==QMessageBox::No){
    QString filename(":/pictures/src/wei.png");
    QImage* img=new QImage;
    if((img->load(filename))) //加载图像
    {
        label=new QLabel();
        label->setPixmap(QPixmap::fromImage(*img));
        label->setScaledContents(true);
        label->setMaximumSize(547,662);
        label->show();
    }
}
  • 演示效果:点击充值按钮,产生一个对话框

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董哥的黑板报

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值