Как я могу получить имена столбцов QSqlTableModel?

Я хотел бы иметь что-то вроде QString QSqlTableModel::getColumnName(int col).

2 ответа

Решение

Вы можете установить псевдонимы имен столбцов, например, в QSqlTableModel:

model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
model->setHeaderData(1, Qt::Horizontal, QObject::tr("First name"));
model->setHeaderData(2, Qt::Horizontal, QObject::tr("Last name"));

Таким же образом вы можете получить псевдонимы имен столбцов, например, из QSqlTableModel:

QString columnName1 = model->headerData(0, Qt::Horizontal, Qt::DisplayRole).toString();
QString columnName2 = model->headerData(1, Qt::Horizontal, Qt::DisplayRole).toString();
QString columnName3 = model->headerData(2, Qt::Horizontal, Qt::DisplayRole).toString();

По умолчанию, если вы не установите псевдоним, имя столбца будет равно тому, что было прочитано из метаданных таблицы при инициализации вашей модели. Убедитесь, что ваш индекс раздела является допустимым индексом столбца. Обязательно укажите ориентацию по горизонтали для столбцов и по вертикали для строк.

Надеюсь это поможет.

После вызова setTable() вы можете получить информацию о поле, вызвав метод record().

QString getColumnName(int col) {
   return sqlTableModel.record().fieldName(col);
}
Другие вопросы по тегам