例如,如果标题以英文显示“ 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();
}
答案 0 :(得分:0)
感谢您的见解。事实证明,我的派生模型头文件中存在一个简单的错误。该类需要具有Q_OBJECT宏,翻译过程才能正常工作。现在,它可以正确更新标题。