• 5664阅读
  • 8回复

[提问]窗口标题栏中如何正确的显示字符® [复制链接]

上一主题 下一主题
离线weichanghe
 

只看楼主 正序阅读 楼主  发表于: 2015-08-11
Hi,大家好。
我在程序中设置了 const QString title = "Virtuoso ® ";

但是最后运行得到GUI窗口中,® 变成了 ? 号。

在百度搜过,说是把编码改为 Unicode - Codepage 1200 就可以。
我已经按照这样的方法更改过,但是无效,® 在标题栏中显示仍然是 ?

请问大家谁碰到过呢?
离线weichanghe

只看该作者 8楼 发表于: 2015-08-14
回 seahouse 的帖子
seahouse:
用 const QString title = tr("Virtuoso ® "); 试试呢?
加个 tr("")


首先谢谢你。
我在百度也查了下,
然后

#include <QObject>
const QString title  = QObject::tr("Virtuoso ® ");

但是,最后仍然是 ? 号。

哎。菜鸟
离线roywillow

只看该作者 7楼 发表于: 2015-08-13
回 weichanghe 的帖子
weichanghe:®是通过搜狗拼音打出来的。
[图片]
....... (2015-08-12 22:58) 

所以说还是类似于中文显示成乱码的原因,因为这个标志根本不是ascii表里的字符啊
搜搜这个问题基本就能得到答案了,但是不建议用那些setCodecFor
在源码中写unicode字符是个非常麻烦并且不讨好的行为,通俗来讲,因为编译器看到的源码只是一段二进制,不知道把这段二进制内容解读为何种字符写入程序,同时你也不知道程序执行的时候会不会按照你希望的样子解码这段二进制为正确的文本
解决这种问题最合适的方法就是使用Qt的翻译机制,或者干脆自己用QChar构造这个字符,然后添加到QString中
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线seahouse

只看该作者 6楼 发表于: 2015-08-13
Re:窗口标题栏中如何正确的显示字符®
用 const QString title = tr("Virtuoso ® "); 试试呢?
加个 tr("")
离线weichanghe

只看该作者 5楼 发表于: 2015-08-12
回 彩阳 的帖子
彩阳:
我一般用语言家,不会有什么问题。
还有类似©的。
就经验而谈,如果显示的是?,那么可以确定的是编码的问题;如果显示的是优,那么可以确定是字体没有这个字符对应的glyph(字形)。



®是通过搜狗拼音打出来的。


编码已经改过很多个了,一直不行。


语言家是什么意思哦??
离线彩阳

只看该作者 4楼 发表于: 2015-08-12
Re:窗口标题栏中如何正确的显示字符®
我一般用语言家,不会有什么问题。
还有类似©的。
就经验而谈,如果显示的是?,那么可以确定的是编码的问题;如果显示的是白色方块,那么可以确定是字体没有这个字符对应的glyph(字形)。
上海Qt开发联盟,热忱地欢迎你的加入!
离线roywillow

只看该作者 3楼 发表于: 2015-08-12
Re:窗口标题栏中如何正确的显示字符®
我觉得这就跟你在源代码里写中文会导致乱码一样的原因吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线weichanghe

只看该作者 2楼 发表于: 2015-08-12
回 fxbullet 的帖子
fxbullet:试试 const QString title = QStringLiteral("Virtuoso ® "); (2015-08-12 08:38) 

先谢谢了。

我安装的是 Win7下的Qt 4.8.5,找不到这个QStringLiteral,
百度了下,发现QStringLiteral是Qt5里面引入的一个宏。

不知道Qt4 如何实现
离线fxbullet

只看该作者 1楼 发表于: 2015-08-12
Re:窗口标题栏中如何正确的显示字符®
试试 const QString title = QStringLiteral("Virtuoso ® ");
快速回复
限100 字节
 
上一个 下一个