我可以遍历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);
}
}