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里怎么显示中文的主要内容,如果未能解决你的问题,请参考以下文章