Qt setHorizontalHeaderLabels for tableWidget

7

如何使用我的的setHorizontalHeaderLabels属性来指定列名而不是数字?我想保留我的行数为数字,但将我的列改为收集到QList中的名称。

现在,我将rowcolumn的值设置为整数。当我尝试使用setHorizontalHeaderLabels时,似乎列的整数值会覆盖我尝试指定的列名,我不知道如何修复它。

这是我目前如何设置值的方式,它只涉及我的行和列的整数值:

    QList< QStringList > columnHeaderList; 

    //--- create the horizontal (column) headers
    QStringList horzHeaders;
    ui->tableWidget_inputPreview->setHorizontalHeaderLabels( horzHeaders );
    horzHeaders << "test1" << "test2" << "test3"; 

    ui->tableWidget_inputPreview->setRowCount( rowList.size() - 1 );
    ui->tableWidget_inputPreview->setColumnCount( columnHeaderList[0].size() );

for ( int row = 0; row < rowList.size(); ++row ) {
    for ( int column = 0; column < rowList[row].size(); ++column ) {
        ui->tableWidget_inputPreview->setItem(row, column, new QTableWidgetItem(rowList[row][column]));
    }
}

我需要一些关于如何正确地从我的QList中获取值并将这些值设置为我的tableWidget中的列的指导。出现在我的tableWidget中的列是1、2、3、4、5、6、7,这些数字来自传递给它的项数,而不是test1、test2、test3


1
我有点困惑... setHorizontalHeaderLabels 正好满足了你的需求... 它将 QStringList 中的 QStrings 设置为表头。 - Anthony
好的,我正在解析一个文本文件并获取行数作为行数。文本文件的第一行是注释,并包含我想要使用的列名。但是,现在我只能获得列数,不知道如何传递实际的列名,因为它一直被列数覆盖。在上面的代码示例中,“row”和“column”是整数值。 - THE DOCTOR
我现在只能获取列数,不知道如何传递实际的列名,因为它会被列数覆盖。请编辑您的问题以明确您的意思。 - cmannett85
我在问题描述中添加了更多内容,以及我正在处理的更多代码。 - THE DOCTOR
2个回答

12
在您的示例中,您将setHorizontalHeaderLabels设置为空列表。在设置标题之前,请确保填充该列表。此外,在设置列计数后设置标题。
这是您想要的顺序:
//--- create the horizontal (column) headers
QStringList horzHeaders;
horzHeaders << "test1" << "test2" << "test3";
ui->tableWidget_inputPreview->setRowCount( rowList.size() - 1 );
ui->tableWidget_inputPreview->setColumnCount( columnHeaderList[0].size() );
ui->tableWidget_inputPreview->setHorizontalHeaderLabels( horzHeaders );

没错,我真是傻了……我猜想可能是因为我按顺序做事情的问题。谢谢! - THE DOCTOR
谢谢你的回答,解决了我的问题! :-) 关于“另外,在设置列数之前设置标题。”:你的代码不是相反的吗?你是不是想说“在设置列数之后设置标题”?至少在Qt 5.4上这似乎是唯一可行的方法。 - ssc

8

请注意,调用ui->tableWidget_inputPreview->clear()会删除标签。

考虑使用ui->tableWidget_inputPreview->clearContents()来保留标签。


哦天啊!那真的很难找到。谢谢你指出来。我不知道清空表格也会删除标签。 - BSD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接