QTreeView найти максимальную ширину строк (авторазмер) - PullRequest
0 голосов
/ 16 января 2019

Я могу перебирать данные модели моего дерева 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);
    }
}
...