如何将数据头添加到Qt中的QTableWidget?

San*_*nto 3 c++ qt qtgui qtablewidget qheaderview

我还在学习Qt,我非常感谢SO社区为我提供了很好的,非常及时的Qt问题答案.谢谢.

我对在标题中添加标题的想法感到很困惑QTableWidget.我想做的是有一个包含团队成员信息的表.每个row成员都应该包含他的名字和姓氏,每个名字都在自己的单元格中,一个单元格中有一个电子邮件地址,另一个单元格中有办公室.我将header在这些列上方添加适当的名称.

我试图轻松开始,只需要标题显示"Last"(如姓氏).这是我的代码.

int column = m_ui->teamTableWidget->columnCount();
m_ui->teamTableWidget->setColumnCount(column+1);
QString* qq = new QString("Last");
m_ui->teamTableWidget->horizontalHeader()->model()->setHeaderData(0, 
Qt::Horizontal, QVariant(QVariant::String, &qq));
Run Code Online (Sandbox Code Playgroud)

我的表被正确呈现,但标题不包含我期望的内容.它包含1个包含文本"1"的单元格.

我显然在做一些非常愚蠢的事情,这是错误的,但我迷失了.我一直在倾注文件,一无所获.

感谢您的帮助.

Luk*_*ský 7

最简单的解决方案是setHorizontalHeaderLabels(myListOfHeaderLabels).


Cal*_*itt 5

我看到一个潜在的问题,也是一种更简单的方法.

一,问题:

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.
Run Code Online (Sandbox Code Playgroud)

我想你想这样做:

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

现在,更简单的方法是为标题项设置数据:

m_ui->teamTableWidget->horizontalHeaderItem( 0 )->setText( "Last" );
Run Code Online (Sandbox Code Playgroud)