Как мне изменить текст заголовка QTableView? - PullRequest
0 голосов
/ 29 июня 2018

Например, если заголовок отображал «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);

Но, похоже, это не запускает обновление представления. Все остальные виджеты отображаются на новом языке.

В классе производной модели я также переопределил функцию headerData () QAbstractTableModel:

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();
}

1 Ответ

0 голосов
/ 02 июля 2018

Спасибо за понимание. Оказывается, в заголовочном файле моей производной модели произошла простая ошибка. Класс должен иметь макрос Q_OBJECT для правильной работы процесса перевода. Теперь он корректно обновляет заголовки.

...