2016-03-31 2 views
1

У меня проблема с Unicode. Немецкие письма ä, ü, ö и ß видны только как белый вопросительный знак в черном ромбе. Я сделал QAbstractTableModel в Qt5.5.1.QAbstractTableModel и 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("ä"); 
    // 
} 

Кто-нибудь знает, как правильно отображать эти символы?

изменить .: Да, мне нужна строка, я просто использовал один символ в этом примере.

И благодаря Адриано Репетти, это было решение:

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

ли вам нужно, чтобы показать один символ? – vahancho

+1

Это не строка UTF-8, простой способ - вернуть QString :: fromWCharArray (L "ä") '. Вы _may_ используете одиночный 'QChar', если у вас действительно есть один символ (и вам не нужно будет обрабатывать e + '), но я предпочитаю общую форму. –

ответ

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); 
[..] 
Смежные вопросы