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," "); }