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

C++ 如何在Linux上使用QT正确显示unicode符号?,c++,qt,unicode,qstring,C++,Qt,Unicode,Qstring,我想在QT中添加一个Unicode符号作为列表小部件项。(特别是本项目:) 为此,我使用以下方法: this->addItem( new QListWidgetItem( QString::fromUtf8("\u25B6")) ) ; 但是当我打开小部件时,我只看到一个空白矩形代替了这个unicode符号。我甚至还尝试了其他unicode符号,但它们也只显示空白矩形 这种方法有什么不对 编辑:在回答之后,我将QListWidgetItem的字体更改为Serif,并且成功了。有几种可

我想在QT中添加一个Unicode符号作为列表小部件项。(特别是本项目:)

为此,我使用以下方法:

this->addItem( new QListWidgetItem(  QString::fromUtf8("\u25B6")) ) ; 
但是当我打开小部件时,我只看到一个空白矩形代替了这个unicode符号。我甚至还尝试了其他unicode符号,但它们也只显示空白矩形

这种方法有什么不对


编辑:在回答之后,我将QListWidgetItem的字体更改为Serif,并且成功了。

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

编辑:字体(存储在系统字体文件中)是在屏幕上绘制每个字符图像的命令。许多(如果不是全部的话)字体是不完整的,这意味着它们不能表示unicode中可能存在的所有2000000000+代码(表示字符的数字)。为了实用,这些文件将非常大

您想要打印的三角形是相当基本的,应该有许多字体集。解放无衬线和解放衬线是我刚刚检查过的两种


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

您的代码行不应该说
QString::fromUtf8(“\u25B6”)
?@Hurzelchen是的,很抱歉。但是,它仍然无法显示任何unicode符号,因此这并不重要:|我不完全理解字体的含义。我把那个字符串打印在终端上,它打印的是“?”而不是unicode字符。我怎么才能知道字体是否是造成这种情况的原因?@Ericsir不,我还没有试过,实际上我不知道如何才能改变它。基本上,我不太清楚改变字体将如何改变某些东西:(无论如何,即使它起作用(即改变终端字体),它是否有助于调试实际问题?我是否必须更改QT/C++代码中的某些字体以在小部件上显示符号?在谷歌搜索了一些字体后,我明白了这一点。Unicode符号在某些特定字体中受支持。我的小部件默认使用Helvetica,我将其更改为Serif,它工作了!谢谢。