QT开发中文网

c++ qt QTableWidget 设置表格列宽为一定比例

可以通过设置QHeaderView的ResizeMode属性来控制列宽的调整方式,从而实现设置表格列宽为一定比例的效果。

首先,需要将QTableWidget的水平头部视图(horizontalHeader)强制转换为QHeaderView类型,并设置其ResizeMode属性为Stretch。这样,在表格中添加新的列时,所有列会自动按比例分配宽度。

然后,可以使用setColumnWidth()方法来手动设置某些列的宽度。例如,如果要将第1和第2列设置为相同的宽度,并让第3列占据剩余空间,则可以这样:

// 设置第1、2列宽度
tableWidget->setColumnWidth(0, 100);
tableWidget->setColumnWidth(1, 100);

// 获取剩余空间总宽度
int remainingWidth = tableWidget->viewport()->width() - tableWidget->columnWidth(0) - tableWidget->columnWidth(1);

// 设置第3列宽度
tableWidget->horizontalHeader()->setStretchLastSection(true); // 让最后一列占据剩余空间
tableWidget->setColumnWidth(2, remainingWidth);

在上述代码中,我们先手动设置了前两列的宽度,然后获取了剩余空间总宽度,并将最后一列(即第3列)设置为占据剩余空间。这里用到了QHeaderView::setStretchLastSection()方法来确保最后一列始终占据剩余空间。

当添加新的列时,所有列会自动按比例分配宽度,并且第3列仍然会占据剩余空间。

注意:如果想要在设置表格列宽为一定比例的同时,让表格自适应窗口大小,则需要结合使用resizeColumnsToContents()和resizeRowsToContents()方法。例如:

// 设置水平头部视图ResizeMode属性
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

// 设置表格列宽为一定比例
tableWidget->setColumnWidth(0, 100);
tableWidget->setColumnWidth(1, 100);
int remainingWidth = tableWidget->viewport()->width() - tableWidget->columnWidth(0) - tableWidget->columnWidth(1);
tableWidget->horizontalHeader()->setStretchLastSection(true);
tableWidget->setColumnWidth(2, remainingWidth);

// 自适应窗口大小
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();

这样,在窗口大小发生变化时,表格会自动调整列宽和行高以适应新的窗口大小。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=2130

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?