【问题标题】:How do I change the header text of a QTableView?如何更改 QTableView 的标题文本?
【发布时间】:2018-07-02 16:25:14
【问题描述】:

例如,如果标题以英语显示“ColumnName”,我尝试通过处理语言更改事件将其更改为新语言:

QApplication::instance()->installTranslator( translator );
ui->retranslateUi(this);
ui->tableView->retranslate();

然后调用

model->setHeaderData(0, Qt::Horizontal, tr("ColumnName"), Qt::DisplayRole);
model->headerDataChanged(Qt::Horizontal, 0, 1);

但这似乎不会触发视图更新。所有其他小部件都以新语言显示。

在派生模型类中,我还重写了 QAbstractTableModel headerData() 函数:

QVariant MyTableModel::headerData(int section, Qt::Orientation orientation, int role) const
{
    if (role == Qt::DisplayRole)
    {
    if (orientation == Qt::Horizontal) {
      switch (section)
      {
      case Priority:
        return tr("ColumnName");
      case FileName:
        return tr("Filename");
      default:
        return QString("");
      }
    }
  }  
  return QVariant();
}

【问题讨论】:

标签: c++ qt qt5


【解决方案1】:

感谢您的见解。事实证明,我的派生模型头文件中有一个简单的错误。该类需要存在 Q_OBJECT 宏才能使翻译过程正常工作。它现在正确更新标题。

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    相关资源
    最近更新 更多