How do I add a header with data to a QTableWidget in Qt?

亡梦爱人 提交于 2019-11-29 08:02:48
Lukáš Lalinský

The easiest solution is setHorizontalHeaderLabels(myListOfHeaderLabels).

I see one potential problem, and also an easier way to do this.

First, the problem:

QString* qq = new QString("Last"); // <- qq is a pointer to a string.
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, 
    QVariant(QVariant::String, &qq)); // <- You take the address of a pointer, or create a handle.

I think you want to do this instead:

QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
    Qt::Horizontal, QVariant(QVariant::String, *qq));

Now, the easier way to set the data for a header item:

m_ui->teamTableWidget->horizontalHeaderItem( 0 )->setText( "Last" );

At the request of the person who steered me toward the right place, I am posting the way I accomplished this as an answer and I am accepting it.

    m_ui->teamTableWidget->setColumnCount(m_ui->teamTableWidget->columnCount()+1);
    QTableWidgetItem* qtwi = new QTableWidgetItem(QString("Last"),QTableWidgetItem::Type);
    m_ui->teamTableWidget->setHorizontalHeaderItem(0,qtwi);

For posterity:

The default implimentations of setHeaderData() and headerData() in QAbstractItemModel do not do anything. You can (should?) (re)impliment headerData() in order to return useful a label.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!