2016-03-31 79 views
1

我有一个Unicode问题。德国字母äüöß仅在黑色菱形中显示为白色问号。我在Qt5.5.1中创建了一个QAbstractTableModelQAbstractTableModel和Unicode(德语变音符号)

我的文档是UTF-8编码的。我已经尝试过了,但我仍然遇到同样的问题。

QVariant bodyPartModel::data(const QModelIndex &index, int role) const 
{ 
    switch (role){ 
     case Qt::DisplayRole: 
      if (col == 0 && row == 0) return tr("ü");  
      if (col == 0 && row == 2) return String::fromUtf8("ä"); 
    // 
} 

有没有人有关于如何正确显示这些字符的线索?

编辑:是的,我需要一个字符串,我只是在这个例子中使用了一个字符。

并感谢阿德里亚诺Repetti,这是解决方案:

QString::fromWCharArray(L"Steißbein") 
+0

你需要出示单个字符? – vahancho

+1

它不是一个UTF-8字符串,简单的方法是返回QString :: fromWCharArray(L“ä”)'。如果你真的有一个字符(你不需要处理e +的东西),你可以使用'QChar',但我更喜欢一般形式。 –

回答

0

如果需要返回单个字符,我建议做以下几点:

QVariant bodyPartModel::data(const QModelIndex &index, int role) const 
{ 
    switch (role){ 
    case Qt::DisplayRole: 
     if (col == 0 && row == 0) return QChar(0x00FC);  
     if (col == 0 && row == 2) return QChar(0x00E4); 
[..] 
相关问题