2016-03-31 2 views
1

J'ai un problème avec Unicode. Les lettres allemandes ä, ü, ö et ß ne sont visibles que comme un point d'interrogation blanc dans un losange noir. J'ai fait un QAbstractTableModel dans Qt5.5.1.QAbstractTableModel et Unicode (trémas allemands)

Mon document est codé en UTF-8. J'ai déjà essayé, mais j'ai toujours le même problème.

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("ä"); 
    // 
} 

Quelqu'un sait-il comment afficher ces caractères correctement?

edit .: Oui j'ai besoin d'une chaîne, je viens d'utiliser un caractère dans cet exemple.

Et Merci à Adriano Repetti, ce fut la solution:

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

Avez-vous besoin de montrer un personnage unique? – vahancho

+1

Ce n'est pas une chaîne UTF-8, la méthode facile est 'return QString :: fromWCharArray (L" ä ")'. Vous pouvez _may_ utiliser un seul 'QChar' si vous avez vraiment un seul caractère (et vous n'aurez pas besoin de manipuler e + 'truc) mais je préfère la forme générale. –

Répondre

0

Si vous avez besoin de retourner un seul caractère, je vous conseille de faire ce qui suit:

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); 
[..]