我正在使用Qt 5.2而我正在尝试从QTableView
打印一个表,但是我遇到了这个问题,根据其内容计算行高。我现在得到的是下面的循环,循环遍历QTableView
行,并使用boundingRect
函数获取每行的高度。
for(int r=0; r<rows; ++r) {
//tempTable.resizeRowToContents(r);
QString str = tempTable.model()->data(tempTable.model()->index(r,0)).toString();
QFontMetrics fm(tempTable.font());
QRect rect = fm.boundingRect(0,0,tempTable.columnWidth(0),0,(Qt::TextWordWrap),str);
tempTable.setRowHeight(r,rect.size().height());
totalHeight += tempTable.rowHeight(r);
}
不幸的是,这个函数返回了一些奇怪的结果,为字符串做了大填充:
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
所以,最后,我发现我的代码部分导致了麻烦。这个字符串,
tempTable.horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
为了将列拉伸到页面宽度而放置的以某种方式以某种方式影响了boundingRect
的行为。我删除它并使用setColumnWidth
函数设置每个列宽后,一切看起来都不错。