如何获取QSqlTableModel的列名?

时间:2011-01-04 16:48:43

标签: c++ sql qt qabstractitemmodel

我想要像QString QSqlTableModel :: getColumnName(int col)这样的东西。

2 个答案:

答案 0 :(得分:5)

您可以在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();

默认情况下,如果未设置别名,则列名称将等于初始化模型时从表元数据中读取的值。确保您的节索引是有效的列索引。请务必为列指定水平方向,为行指定垂直方向。

希望这有帮助。

答案 1 :(得分:0)

调用setTable()后,可以获取调用record()方法的字段信息。

QString getColumnName(int col) {
   return sqlTableModel.record().fieldName(col);
}