Я могу перебирать данные модели моего дерева 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());
}
}
Но я хочу перебрать строки QWidget QTreeView, чтобы определить ширину каждой строки, чтобы найти максимальную ширину всех строк. Каждая строка содержит два столбца с текстом.
Обновление: моей конечной целью является автоматическое изменение размера левой панели разделителя (который содержит 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);
}
}