在我的布局中,动态生成的 QTableView 似乎已调整大小以仅显示一行。我想让表视图的容器有一个滚动条,而不是单个表视图,它应该显示完整的内容。
显然,Qt 没有为此内置任何东西,您需要手动计算和设置大小。
这就是我垂直调整大小的方法(Qt 5.8)。您可能需要添加 setMaximumHeight/width。
为了进一步开发它,它应该在将水平滚动条添加到尺寸之前检查是否存在。不过这对于我的使用来说已经足够了。
编辑 2018-03:您可能需要调用 tableView->resizeRowsToContents();在此函数之前,使尺寸实际上对应于内容的实际高度。
void verticalResizeTableViewToContents(QTableView *tableView)
{
int count=tableView->verticalHeader()->count();
int scrollBarHeight=tableView->horizontalScrollBar()->height();
int horizontalHeaderHeight=tableView->horizontalHeader()->height();
int rowTotalHeight=0;
for (int i = 0; i < count; ++i) {
// 2018-03 edit: only account for row if it is visible
if (!tableView->verticalHeader()->isSectionHidden(i)) {
rowTotalHeight+=tableView->verticalHeader()->sectionSize(i);
}
}
tableView->setMinimumHeight(horizontalHeaderHeight+rowTotalHeight+scrollBarHeight);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)