【发布时间】: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();
}
【问题讨论】:
-
我已经看过这些条目了。第一个是过时的。 qt 5 中不再有这种方法。不在 QTable 的视图形式中。第二个仅适用于使用 QStandardItem 模型时,我没有使用。
-
model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID")); -
@Willeman,我不确定为什么没有答案提到它,但您应该在自定义模型中覆盖
headerData()并在那里提供您的标题...