QMessageBox:warning里怎么显示中文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QMessageBox:warning里怎么显示中文相关的知识,希望对你有一定的参考价值。

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
参考技术A QString::fromLocal8("中文");
把cpp文件保存为utf-8编码;

如何让标题加粗?

【中文标题】如何让标题加粗?【英文标题】:How to make the title bold? 【发布时间】:2010-04-07 12:30:15 【问题描述】:

QMessageBox 中如何使标题文本加粗? 这是我用来显示消息框的示例代码:

int ret = QMessageBox::warning(this, tr("My Application"),
          tr("document has been modified.\n"
          "Do you want to save your changes?"),
          QMessageBox::Save | QMessageBox::Discard
          | QMessageBox::Cancel,
          QMessageBox::Save);

我只希望tr("My Application") 加粗,其余为正常字体。 我该怎么做? 默认情况下,我得到标题和描述性文本的正常字体。

谢谢。

【问题讨论】:

【参考方案1】:

您可以在消息框内容中添加一些类似 HTML 的格式,即:

// ...
"Do you want to save your <b>changes</b>?"),
// ...

我无法访问 S60 环境来检查它是否也适用于消息框标题。它在 Windows 上不起作用,但是,嘿,值得一试。

【讨论】:

【参考方案2】:

这是不可能的,因为大多数窗口管理器不允许在窗口标题中包含富文本。

【讨论】:

以上是关于QMessageBox:warning里怎么显示中文的主要内容,如果未能解决你的问题,请参考以下文章

QT5:QMessageBox

如何让标题加粗?

请问谁知道怎么把Qt中的QMessageBox中显示的ok和cancel改成汉字啊 确定和取消啊!

qt 我想让QMessageBox里面显示我接受到的数组。

QMessageBox消息框的几种类型

QT中Dialog去掉标题后就不能像QMessageBox那样让其它窗口失效,怎么办才好?