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