c++ - 只有一列适合其内容大小,而其他拉伸
问题描述
我有一个看起来像这样的表:
| 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
(连同它的价值观)来适应它的内容?
解决方案
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中找到完整的示例。
推荐阅读
- android - 无法解决“原因:android.view.InflateException: Binary XML file line #12: Binary XML file line #11: Error inflating class fragment”
- nginx - kuberntes 入口重写 URL 不会根据正则表达式规则被覆盖
- .htaccess - 正则表达式中的可选文本
- algolia - Algolia“从 Docker 映像运行爬网”
- algorithm - 魔方:如何检查随机面是否与实际可解的立方体匹配?
- azure - Azure 数据工厂链接服务到 Sharepoint
- junit5 - 如何在 Kotlin 多平台中为 Flows 编写单元测试
- c# - WebApi:如何让异步方法先运行,然后再继续
- mongodb - 如何使用 Monogodb 中的字段名称计算产品组?
- javascript - 函数的某些部分在 keypress eventListener 中不起作用