QT FontMetrics :: BoundingRect大小错误

时间:2014-05-07 13:22:47

标签: c++ qt qtableview

我正在使用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);
}

不幸的是,这个函数返回了一些奇怪的结果,为字符串做了大填充: enter image description here

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

所以,最后,我发现我的代码部分导致了麻烦。这个字符串,

tempTable.horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
为了将列拉伸到页面宽度而放置的

以某种方式以某种方式影响了boundingRect的行为。我删除它并使用setColumnWidth函数设置每个列宽后,一切看起来都不错。