首页 > 代码库 > QMessageBox 弹出框上的按钮设置为中文

QMessageBox 弹出框上的按钮设置为中文

Qt 默认的弹出框上的按钮式英文,虽然也知道是什么意思,但终究不如中文看着顺眼。

    QMessageBox box(QMessageBox::Warning,"标题","弹出框按钮更改为中文!");    box.setStandardButtons (QMessageBox::Ok|QMessageBox::Cancel);    box.exec ();

弹出效果:

在网上查了很多资料,有各种各样的方法,弄得我晕头转向,毕竟我接触Qt才不过一个月。不过在我坚持不懈的努力下,总算是找到了一个便捷的方法。

    QMessageBox box(QMessageBox::Warning,"标题","弹出框按钮更改为中文!");    box.setStandardButtons (QMessageBox::Ok|QMessageBox::Cancel);    box.setButtonText (QMessageBox::Ok,QString("确 定"));    box.setButtonText (QMessageBox::Cancel,QString("取 消"));    box.exec ();

弹出效果:

怎么样,简单吧?

另外再附赠一个简单的弹出框类。虽然还没有办法返回用户点击的按钮,不过已经可以基本做到类似C#的使用效果了。这是我闲的无聊花了整整半天才搞定的。大概高手觉得很无趣吧?不过对我这种初学者来说,能弄到这种程度已经足以让我满足了。

这个类暂时先这样,等以后有机会再做补充。大概……

文件头:

#ifndef MESSAGEBOX_H#define MESSAGEBOX_H#include <QMessageBox>#include <QPushButton>#include <QString>#include <QMap>enum MessageBoxButtons{    OK = 0,                         //消息框包含“确定”按钮    OKCancel = 1,                   //消息框包含“确定”和“取消”按钮    AbortRetryIgnore = 2,           //消息框包含“中止”、“重试”和“忽略”按钮    YesNoCancel = 3,                //消息框包含“是”、“否”和“取消”按钮    YesNo = 4,                      //消息框包含“是”和“否”按钮    RetryCancel = 5                 //消息框包含“重试”和“取消”按钮};enum MessageBoxIcon{    None = 0,                       //消息框未包含符号    Hand = 1,                       //该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的    Question = 2,                   //该消息框包含一个符号,该符号是由一个圆圈和其中的一个问号组成的    Exclamation = 3,                //该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的    Asterisk = 4,                   //该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的    Stop = 5,                       //该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的    Error = 6,                      //该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的    Warning = 7,                    //该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的    Information = 8                 //该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的};class MessageBox{public:    static void Show(const QString & content);    static void Show(const QString & content, const QString & caption);    static void Show(const QString & content, const QString & caption, MessageBoxButtons button);    static void Show(const QString & content, const QString & caption, MessageBoxButtons button, MessageBoxIcon icon);private:    static QMap<QString,QMessageBox::StandardButton> GetButton(MessageBoxButtons type);    static QString GetButtonText(QMessageBox::StandardButton standar);signals:};#endif // MESSAGEBOX_H

源文件:

#include "MessageBox.h"QString MessageBox::GetButtonText (QMessageBox::StandardButton standar){    switch (standar)    {    case QMessageBox::Ok:        return QString("确 定");    case QMessageBox::Cancel:        return QString("取 消");    case QMessageBox::Abort:        return QString("终 止");    case QMessageBox::Retry:        return QString("重 试");    case QMessageBox::Ignore:        return QString("忽 略");    case QMessageBox::Yes:        return QString("");    case QMessageBox::No:        return QString("");    default:        return QString("OK");    }}QMap<QString,QMessageBox::StandardButton> MessageBox:: GetButton(MessageBoxButtons type){    QMap<QString,QMessageBox::StandardButton> map;    switch (type)    {    case MessageBoxButtons(0):    default:        map.insert (GetButtonText(QMessageBox::Ok),QMessageBox::Ok);        break;    case MessageBoxButtons(1):        map.insert (GetButtonText(QMessageBox::Ok),QMessageBox::Ok);        map.insert (GetButtonText(QMessageBox::Cancel),QMessageBox::Cancel);        break;    case MessageBoxButtons(2):        map.insert (GetButtonText(QMessageBox::Abort),QMessageBox::Abort);        map.insert (GetButtonText(QMessageBox::Retry),QMessageBox::Retry);        map.insert (GetButtonText(QMessageBox::Ignore),QMessageBox::Ignore);        break;    case MessageBoxButtons(3):        map.insert (GetButtonText(QMessageBox::Yes),QMessageBox::Yes);        map.insert (GetButtonText(QMessageBox::No),QMessageBox::No);        map.insert (GetButtonText(QMessageBox::Cancel),QMessageBox::Cancel);        break;    case MessageBoxButtons(4):        map.insert (GetButtonText(QMessageBox::Yes),QMessageBox::Yes);        map.insert (GetButtonText(QMessageBox::No),QMessageBox::No);        break;    case MessageBoxButtons(5):        map.insert (GetButtonText(QMessageBox::Retry),QMessageBox::Retry);        map.insert (GetButtonText(QMessageBox::Cancel),QMessageBox::Cancel);        break;    }    return map;}void MessageBox:: Show(const QString & content, const QString & caption, MessageBoxButtons button,                              MessageBoxIcon icon){    QMessageBox::Icon con;    switch(icon)    {    case MessageBoxIcon(0):        con = QMessageBox::NoIcon;        break;    case MessageBoxIcon(1):    case MessageBoxIcon(5):    case MessageBoxIcon(6):        con = QMessageBox::Critical;        break;    case MessageBoxIcon(2):        con = QMessageBox::Question;        break;    case MessageBoxIcon(3):    case MessageBoxIcon(7):        con = QMessageBox::Warning;        break;    default:        con = QMessageBox::Information;        break;    }    QMap<QString,QMessageBox::StandardButton> ms = GetButton(button);    QMessageBox box(con, caption, content);    int size = ms.size ();    switch(size)    {    case 1:        box.setStandardButtons (ms.first ());        box.setButtonText (ms.values().at (0),ms.keys ().at (0));        break;    case 2:        box.setStandardButtons (ms.first () | ms.last ());        box.setButtonText (ms.values().at (0),ms.keys ().at (0));        box.setButtonText (ms.values().at (1),ms.keys ().at (1));        break;    case 3:        box.setStandardButtons (ms.values ().at (0)|ms.values ().at (1)|ms.values ().at (2));        box.setButtonText (ms.values().at (0),ms.keys ().at (0));        box.setButtonText (ms.values().at (1),ms.keys ().at (1));        box.setButtonText (ms.values().at (2),ms.keys ().at (2));        break;    }    box.exec ();}void MessageBox:: Show(const QString & content, const QString & caption, MessageBoxButtons button){    Show(content,caption,button,MessageBoxIcon(0));}void MessageBox:: Show(const QString & content, const QString & caption){    Show(content,caption,MessageBoxButtons(0));}void MessageBox:: Show(const QString & content){    Show(content," ");}