当前位置: 代码迷 >> QT开发 >> QTableView当有内容时,会出现列号。小弟我想在这列的表头上加个文字,应该怎样做
  详细解决方案

QTableView当有内容时,会出现列号。小弟我想在这列的表头上加个文字,应该怎样做

热度:220   发布时间:2016-04-25 05:07:15.0
QTableView当有内容时,会出现列号。我想在这列的表头上加个文字,应该怎样做?
如题。

------解决方案--------------------
在头文件定义 QSqlTableModel *model;


然后在CPP文件中调用该model
下面示例代码便是设置表头
model->setHeaderData(0, Qt::Horizontal, QObject::tr("你想用的列名"));//这是设置第一列
model->setHeaderData(1, Qt::Horizontal, QObject::tr("列名"));//这是设置第二列
------解决方案--------------------
通过重载QAbstractItemModel的headerData函数
------解决方案--------------------
探讨

在头文件定义 QSqlTableModel *model;


然后在CPP文件中调用该model
下面示例代码便是设置表头
model->setHeaderData(0, Qt::Horizontal, QObject::tr("你想用的列名"));//这是设置第一列
model->setHeaderData(1, Qt::Horizontal, QObject::tr("……

------解决方案--------------------
子类化QAbstractTableModel,并覆盖该类的setHeaderData()函数
class MyTableViewModel : public QAbstractTableModel 
{
 public:
QVariant headerData(int section, Qt::Orientation orient, int role) const;
}
QVariant MyTableViewModel::headerData(int section, Qt::Orientation orient, int role) const
{
if (orient == Qt::Vertical && role == Qt::DisplayRole)
return "你想显示的文字";
return QVariant();
}

然后在你的QTableView实例中设置该自定义模型:
tableView->setModel(new MyTableViewModel);

------解决方案--------------------
直接调用你使用的model的setHeaderData函数就可以了
------解决方案--------------------
没那么麻烦,QStandardItemModel有个setHorizontalHeaderLabels(const QStringList& labels );