【问题标题】:QAbstractTableModel and Unicode (german umlauts)QAbstractTableModel 和 Unicode(德语变音符号)
【发布时间】:2016-03-31 07:38:29
【问题描述】:

我遇到了 Unicode 问题。德语字母 äüöß 仅显示为黑色菱形中的白色问号。我在 Qt5.5.1 中创建了一个QAbstractTableModel

我的文档是 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("ä");
    //
}

有人知道如何正确显示这些字符吗?

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

感谢 Adriano Repetti,这就是解决方案:

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

【问题讨论】:

  • 需要显示单个字符吗?
  • 不是 UTF-8 字符串,简单的方法是return QString::fromWCharArray(L"ä")。你可以使用单个QChar,如果你真的只有一个字符(并且你不需要处理 e + ' 的东西),但我更喜欢一般形式。

标签: c++ qt unicode diacritics qabstracttablemodel


【解决方案1】:

如果您需要返回单个字符,我建议您执行以下操作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 2013-02-09
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2013-12-25
    相关资源
    最近更新 更多