LINUX.ORG.RU

Qt: qtablewidget и сортировка


0

1

есть qtablewidget В каждой клетке какой то виджет. причем в столбце виджеты одного типа. спрашивается как отсортировать qtablewidget по столбцу в котором находятся QLabel'ы

в доках есть функция сортировки по столбцу. Вызывая ее тупо с номером столбца - ничего не происходит. В доках нету задания функции сравнения ячеек. есть переделка с выбором порядка сортировки, но он тут не причем.

Варианты: 1. использовать QTableView 2. от наследоваться от QTableWidgetItem и переопределить оператор < 3. для каждого итема указать в качестве EditRole значение QLabel

anonymous
()

Используй QTableView и QSortFilterProxy.

staseg ★★★★★
()

> спрашивается как отсортировать qtablewidget по столбцу в котором находятся QLabel'ы

и в страшном сне такого быть не должно.

держать данные в модели, отдавать через фильтрпрокси в тривьюв. надписи и виджеты запилить через роли и делегаты.

VladimirMalyk ★★★★★
()
Ответ на: комментарий от VladimirMalyk

вы все видимо не поняли. я не спрашиваю как мне что то переделать. и страшные сны можете свои не пересказывать, мне нужно отсортировать по столбцу qtablewidget. и не иначе

preepunk
() автор топика
Ответ на: комментарий от preepunk

ты ССЗБ если сунул в qtablewidget QLabel. для таблицы то просто виджет который рисует картинку-надпись и имеет размер, но не предоставляет никакой информации о том больше он там кого-то или меньше.

чтбы работал http://doc.qt.nokia.com/latest/qtablewidget.html#sortItems виджет таблицы должен содержать QTableWidgetItem у которого есть http://doc.qt.nokia.com/latest/qtablewidgetitem.html#operator-lt что и есть основанием для сортировки.

но ты можешь написать код, который сам будет извлекать текст из всех лейблов в таблице, сравнивать и менять лейблы местами там где это нужно. тогда да, ничего переделывать не придется.

VladimirMalyk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.