首页 > 解决方案 > 只有一列适合其内容大小,而其他拉伸

问题描述

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

  |   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(连同它的价值观)来适应它的内容?

标签: c++qtqtablewidget

解决方案


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中找到完整的示例。


推荐阅读