首页 > 代码库 > 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," ");}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。