QTreeView查找最大行宽度(自动调整大小)

时间:2019-01-15 23:33:02

标签: c++ qt qtreeview

我可以遍历QTreeView树的模型数据:

for (int row = 0; row < tree->model()->rowCount(); ++row) {
    for (int column = 0; column < tree->model()->columnCount(); ++column) {
        idx = tree->model()->index(row, column);
        printf("%s\n", tree->model()->data(idx).toString().toStdString().c_str());
    }           
}

但是我想遍历QTreeView的QWidget行以确定每行的宽度,以便可以找到所有行的最大宽度。每行包含两列文字。

更新:我的最终目标是根据QTreeView中列内容的最大宽度自动调整拆分器(包含QTreeView)的左窗格的大小。我使用QFontMetrics进行了以下操作,并且更加接近,但是它没有考虑到QTreeView的缩进,而且令我惊讶的是,没有一种简单的方法来获取QTreeView单元格或列的内容宽度

int rowWidthMax = 0;
if (treeView->model()) {
    for (int row = 0; row < treeView->model()->rowCount(); ++row) {
        int rowWidth = 0;
        for (int column = 0; column < treeView->model()->columnCount(); ++column) {
            QModelIndex idx = treeView->model()->index(row, column);
            rowWidth += treeView->fontMetrics().width(treeView->model()->data(idx).toString());
        }
        rowWidthMax = std::max(rowWidthMax, rowWidth);
    }
}

0 个答案:

没有答案