在QTableWidget中删除行填充?

时间:2016-04-28 18:40:01

标签: c++ qt

填写QTableWidget表后,我打电话给:

table->resizeRowsToContents();

这会使行变窄但每行之间仍有很多填充,如下所示:

Table After resizeRowsToContents()

查看我发现的文档,我可以设置每行的高度:

table->verticalHeader()->setDefaultSectionSize(16);  

这会移除填充并为我提供我想要的紧密间距:

Table After setDefaultSectionSize(16)

但是,我担心使用像素的绝对大小。如果系统字体设置为大的字体,则文本可能不适合该行。

有没有办法删除行之间的填充,同时确保文本始终适合?

1 个答案:

答案 0 :(得分:0)

使用QFontMetrics方法实现的自定义委托,使其根据使用的字体返回正确的大小。

要计算正确的高度,您可以使用sizeHint()方法的选项参数提供的int height = option.fontMetrics.height();

int height = option.fontMetrics.boundingRect(index.data().toString()).height();

或更准确地说

CMyDelegate* delegate = new CMyDelegate(tableView);
tableView->setItemDelegate(delegate);

编辑:如何使用代理:

{{1}}