Название: [Решено] Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: sergek от Май 29, 2023, 10:48 Коллеги, обнаружились проблемы с использованием subj при переключении от исходной модели к QSortFilterProxyModel: ширина колонок в табличном вьюшнике устанавливается некорректно (шире, чем должно быть). Это происходит в Win 10, Qt 5.13.0. В linux не проверял, но догадываюсь, что там-то будет все хорошо))
Причина обнаружилась в стиле с цветом фона заголовков, который я устанавливаю для таблицы: Код
Путем экспериментов нашел, что если в стиль добавить дополнительно еще какие-нибудь свойства (далеко не всякие!), например: Код то ширина колонок устанавливается корректно. Понимаю, что экстрасенсы в отпуске или уехали за бугор, но, может, есть какие-нибудь предположения? Если появится желание самим попробовать, могу выложить компилируемый пример. Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: PimenS от Май 29, 2023, 14:23 А если стиль устанавливать не для QTableView а для QHeaderView?
Код: tableView->horizontalHeader()->setStyleSheet("QHeaderView::section { background-color: Gainsboro; }"); Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: Авварон от Май 29, 2023, 14:44 если мне не изменяет память то стайлщит через прокси стиль сделан - скорее всего некорректно проксирует вендовый стиль
юзай делегат хз Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: sergek от Май 29, 2023, 15:50 А если стиль устанавливать не для QTableView а для QHeaderView? Не сработало. Код: tableView->horizontalHeader()->setStyleSheet("QHeaderView::section { background-color: Gainsboro; }"); Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: sergek от Май 29, 2023, 15:55 если мне не изменяет память то стайлщит через прокси стиль сделан - скорее всего некорректно проксирует вендовый стиль Про делегат я думал, правда, никогда не делал для заголовков. Но отказался - слишком накладно. Переопределять нужно будет paint, а это гимор еще тот...юзай делегат хз Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: Авварон от Май 29, 2023, 16:02 Ну он там просто дергает метод у стиля - мб там можно что-то подхачить в палитре чтобы бэкграунд поменять
Я вроде красил ячейки заголовка сохраняя вендовый стиль но это было лет 10 назад - уже не помню деталей Название: Re: Проблемы с QTableView::resizeColumnsToContents при использовании прокси Отправлено: sergek от Май 29, 2023, 19:40 Наверное, можно констатировать, что в Windows:
- не работает роль Qt::BackgroundRole в методе QAbstractTableModel::headerData (что-то там не так с использованием палитры). Это самый грустный вывод((; - весьма криво отрабатывают стили при использовании setStyleSheet. Тем не менее есть обходной путь с подбором свойств стилей. Правда, в виду слабой поддержки CSS, получить желаемый результат полностью не удается (например, нет теней box-shadow, а без них заголовок остается плоским). Ну, и остается вариант с делегатом, в котором можно сделать все, что хочешь. "Но за 5 рублей", а хотелось бы за три)) Поэтому тему закрываю, как решенную. |