繁体   English   中英

如何更改QTableView的标题文本?

[英]How do I change the header text of a QTableView?

例如,如果标题以英语显示“ 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();
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM