如何在QTableWidget上显示数据并使用标题从中读取数据?

ayl*_*yla 16 qt qtablewidget

如何在QTableWidget上显示数据并使用标题从中读取数据?

mos*_*osg 22

1).使用以下示例代码创建表:

filesTable = new QTableWidget(0, 2);
QStringList labels;
labels << tr("File Name") << tr("Size");
filesTable->setHorizontalHeaderLabels(labels);
filesTable->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
filesTable->verticalHeader()->hide();
filesTable->setShowGrid(false);
Run Code Online (Sandbox Code Playgroud)

2).添加行:

int row = filesTable->rowCount();
filesTable->insertRow(row);
filesTable->setItem(row, 0, fileNameItem);
filesTable->setItem(row, 1, sizeItem);
Run Code Online (Sandbox Code Playgroud)

请享用.

  • 我认为这行`filesTable-> insertRow(row);`将覆盖最后一行而不是添加一行,它应该是`filesTable-> insertRow(row + 1);`.`fileNameItem`和`sizeItem`应该是QTableWidgetItem的一个实例,如下所示:`QTableWidgetItem*fileNameItem = new QTableWidgetItem; fileNameItem-> setText("文件名项"); QTableWidgetItem*sizeItem = new QTableWidgetItem; sizeItem-> setText("size item");` (2认同)
  • @SIFE感谢您的回复.我已检查过你的代码评论,但没有发现任何问题.`insertRow(row)`,其中`int row = filesTable-> rowCount()`正常工作...... (2认同)

Lem*_*ool 6

要创建列:

ui->tableWidget->setColumnCount('the number of columns');
Run Code Online (Sandbox Code Playgroud)

在您可以插入行之前,您需要设置总行数:

ui->tableWidget->setRowCount('number of rows');
Run Code Online (Sandbox Code Playgroud)

现在循环遍历行和列并在每个中设置数据

for (int ridx = 0 ; ridx < 'number of rows' ; ridx++ )
{
    for (int cidx = 0 ; cidx < 'number of columns' ; cidx++)
    {
      QTableWidgetItem* item = new QTableWidgetItem();
      item->setText('text or number to display');
      ui->tableWidget->setItem(ridx,cidx,item);
    }
}
Run Code Online (Sandbox Code Playgroud)

设置标题

ui->tableWidget->setHorizontalHeaderLabels('QStringList containing the names');
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你