Название: Как добавить тип сортировки в QHeaderView? Отправлено: Hordi от Июль 08, 2010, 11:01 Приветствую
В текущей реализации QHeaderView есть 2 режима сортировки - Qt::AscendingOrder и Qt::DescendingOrder. Мне необходимо добавить третий режим - БЕЗ СОРТИРОВКИ. Сейчас я сделал так - перекрыл mousePressEvent & mouseReleaseEvent и обрабатываю все клики самостоятельно, но появилась проблема - теперь невозможно перетаскивать колонки, т.к. необходим вызов родительского mousePressEvent, а я его не пускаю, т.к. я сам контроллирую изменение типа сортировки. Идей как подрубить перетаскивание пока не родил... Хелп плиз. Qt-4.6.3 Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: GreatSnake от Июль 08, 2010, 11:17 Имхо, лучше выключить авто-сортировку через QTableView/QTreeView::setSortingEnabled( false ).
На header() повесить слот на sortIndicatorChanged() и уже в нём делать сортировку. Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: Hordi от Июль 08, 2010, 11:25 Как я понимаю, если стоит QTreeView::setSortingEnabled( false ), то после клика на хидер сигнал sortIndicatorChanged() генерится не будет, именно поэтому были переопределены mouse-events.
Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: GreatSnake от Июль 08, 2010, 11:30 Цитировать Как я понимаю, если стоит QTreeView::setSortingEnabled( false ), то после клика на хидер сигнал sortIndicatorChanged() генерится не будет Неправильно понимаете. Сигнал генериться будет всегда, а вот соответствующий слот в QTreeView отрабатывать не будет.Поэтому вам и предлагается не полагаться на этот слот, а повесить на QTreeView::header() свой собственный. Но в любом случае вам нужно задуматься над отрисовкой sortIndicator-a в QHeaderView::paintSection(), т.к. про существование UnsortedOrder QHeaderView не имеет понятия. Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: Hordi от Июль 08, 2010, 11:42 Вот проверил - все как я и говорил, т.е. если сортировка отключена - сигнал для QHeaderView не вызывается. И это логично, т.к. индикация не изменяется.
Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: GreatSnake от Июль 08, 2010, 13:00 Извиняюсь, совсем забыл, что нужно добавить после выключении сортировки это:
Код
Название: Re: Как добавить тип сортировки в QHeaderView? Отправлено: mal от Июль 09, 2010, 15:23 Например так:
Код: p_tbl = ui.tableWidget; Пару раз наступив на грабли с включенной автосортировкой, себе под стекло я положил бумажку с такой вот надписью: Цитировать QTableWidget в ui Никогда не ставить SortingEnabled=true, всегда false, сортировку делать самому! |