只有一列适合其内容大小,而另一列则

时间:2019-07-07 20:42:16

标签: c++ qt qtablewidget

我有一个看起来像这样的表:

  |   column1   |   column2    |   column 3
-------------------------------------------
1 | name1       | value1       |  class1
2 | name2       | value2       |  class2
3 | name3       | value3       |  class3

我已将表窗口小部件定义为:

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->setColumnCount(3);
ui->tableWidget->setHorizontalHeaderLabels({"column1", "column2", "column3"});
ui->tableWidget->setItem(currentRow, 0, new QTableWidgetItem(name));
ui->tableWidget->setItem(currentRow, 1, new QTableWidgetItem(values.toString()));
ui->tableWidget->setItem(currentRow, 3, new QTableWidgetItem(class));

我希望我的桌子看起来像这样:

  |   column1   |column2|   column 3
-------------------------------------------
1 | name1       |value1 |  class1
2 | name2       |value2 |  class2
3 | name3       |value3 |  class3

如何才能仅使column2(及其值)适合其内容?

1 个答案:

答案 0 :(得分:0)

您可以通过将列索引作为第一个参数的setSectionResizeMode重载来实现:

ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed);

然后,在插入所有项目之后,在固定大小的列上调用resizeColumnToContents以调整其宽度。

这里是完整的代码:

ui->tableWidget->setColumnCount(3);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Fixed);
ui->tableWidget->setHorizontalHeaderLabels({"column1", "column2", "column3"});

// Insert items here...

ui->tableWidget->resizeColumnToContents(1);

您可以在GitHub中找到完整的示例。