c++ - 如何使用 QT 在 Linux 上正确显示 unicode 符号?

标签 c++ qt unicode qstring

我想在 QT 中添加一个 Unicode 符号作为列表小部件项。 (特别是这个项目:http://www.fileformat.info/info/unicode/char/25B6/index.htm)

我正在为此使用以下方法:

this->addItem( new QListWidgetItem(  QString::fromUtf8("\u25B6")) ) ; 

但是当我打开这个小部件时,我只看到一个空白矩形代替了这个 unicode 符号。我什至也尝试过其他 unicode 符号,但它们也只显示空白矩形。

这个方法有什么问题?

编辑:按照答案后,我将 QListWidgetItem 的字体更改为 Serif,它起作用了。

最佳答案

有几种可能性,但最有可能的是您使用的字体根本没有实现字形。你能看到例如三角形吗?使用与 Qt 字体相同的字体时的编辑器?

编辑:字体(保存在系统的字体文件中)是在屏幕上绘制每个字符图像的命令)。许多(如果不是全部)字体是不完整的,这意味着它们无法表示 unicode 中可能的所有 2,000,000,000 多个代码(代表字符的数字)。这些文件太大而不实用。

您要打印的三角形非常基本,应该可以在许多字体集中使用。 Liberation Sans 和 Liberation Serif 是我刚刚检查过的两个。

我怀疑 Qt 使用了系统的字体集,这可能可以在系统设置的某个地方进行更改。如果您告诉我们您使用的是哪个发行版(即 Ubuntu、Debian 等),也许我们可以提供帮助。

关于c++ - 如何使用 QT 在 Linux 上正确显示 unicode 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808078/

相关文章:

c++ - QT 插槽和信号失败

c++ - Qt SQLite 无法执行 Select 查询

java - 控制代码 0x6 导致 XML 错误

越南语的 Unicode 范围

c++ - 连接数组中的整数?

c++ - 实现字符串映射

C++ permutations high numbers(转换代码)

c++ - 如何在没有 ARM 处理器的 Linux 上安装 TensorflowLite C++?

linux - 如何交叉编译我的 Linux 应用程序以在 Linux 中获得 Windows 可执行文件?

python - 带有土耳其字符的字符串到 unicode