Название: QTablewidget выборочная сортировка (Решено) Отправлено: CJ1 от Июль 24, 2012, 11:58 Помогите пожалуйста сделать выборочную сортировку в QTableWidget.
Пользователь выделяет нужные строки, и они должны сортироваться по имени Название: Re: QTablewidget выборочная сортировка Отправлено: ruzik от Июль 24, 2012, 17:48 Ну, можно, например использовать это:
Код: QList<QTableWidgetItem *> list = tableWidget->selectedItems (); //получаем выделенные ячейки Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 12:09 Спасибо! Но сортирует криво вообще как то!
Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 12:46 Ну помогите пожалуйсто :'(
Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 12:58 Ну как сказал ruzik только надо qSort(lst.begin(), lst.end(), myLessThen) т.к. qSort(lst) будет сортировать по адресам а не по именам
Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:05 А что такое myLessThen ???
Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 13:12 А что такое myLessThen ??? В Ассистенте откройте страницу qSort и поищите LessThan - увидите примерчик. Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:17 ОК, извиняюсь за тупость, просто я уже двое суток не сплю ))))
Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:31 :'( :'( :'( :'( не выходит... говорит кучу ошибок
Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:34 Теперь вот так сделал!
Код: bool caseInsensitiveLessThan(const QTableWidgetItem *s1, const QTableWidgetItem *s2) И всеравно косяки Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:35 А еще сортируются не по строкам а только те которые выделенны
Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 13:47 А еще сортируются не по строкам а только те которые выделенны ??? Так как же надо? Вы писалиПользователь выделяет нужные строки, и они должны сортироваться по имени Ну значит не выделенные не трогаются. Или как ???В текущей реализации ошибку я вижу Код: for (int a=0; a < list.count(); a++){ Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 13:57 Нужно так, просто выделяем несколько строк, и при нажатии на кнопки, строки сортируются по имени!
Я щас вообще думать не могу :'( :'( Но нужно срочно! Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 15:26 Я щас вообще думать не могу :'( :'( Ну ладно, попробую помочь-спасти Пятачка :) Но нужно срочно! Код
Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 15:49 Блиииин! Не то! Так строки не сортируются, они только как попало местами меняются! :'(
Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 16:00 Блиииин! Не то! Так строки не сортируются, они только как попало местами меняются! :'( Проект выкладывайте - быстрее дело будетНазвание: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 16:04 Проект состоит из клиента, сервера, и огромной БД на mysql. Это законченный проект для фирмы, который я написал! Но они потребовали дебильную сортировку!
Тоесть в точности как в excell есть функция сортировать от А до Я Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 16:10 Проект состоит из клиента, сервера, и огромной БД на mysql. Это законченный проект для фирмы, который я написал! Но они потребовали дебильную сортировку! Никто и не просил полный рабочий проект. Нарисуйте окно с таблицей, заполните чем-нибудь, подключите кнопку - вот и все.Тоесть в точности как в excell есть функция сортировать от А до Я Edit: подразумевается что общая сортировка выключена - айтемы показываются в том порядке что были созданы. Если это не так то конечно будет месить хтозна-шо Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 30, 2012, 16:24 Вот! http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html (http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html)
Строки должны сортироваться чтоб получилось а строка а б строка б с строка с р строка р Название: Re: QTablewidget выборочная сортировка Отправлено: DmitryM от Июль 30, 2012, 17:02 У вбюшки есть свойство sortingEnabled, кликаешь по шапке столбца и все сортируется.
Код Ну и пишешь QSortFilterProxyModel Название: Re: QTablewidget выборочная сортировка Отправлено: Igors от Июль 30, 2012, 18:31 Вот! http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html (http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html) В аттаче измененные файлы. Запускаете выбираете ячейки, давите кнопку. Используется метод "грубой силы" - меняется сама модель. Чтобы вернуть взад Вам придется перезарядить всю модель (т.е. где-то хранить еще и исходные данные).Строки должны сортироваться чтоб получилось а строка а б строка б с строка с р строка р Понятно что нормальным, цивильным решением вроде выглядит QSortFilterProxyModel. Однако я затрудняюсь написать такую сортировку - она получается нетранзитивной. И хз как это должно работать - ну ладно, как-то отсортировали, потом selection изменилось - опять сортировать или как? Ведь "оставить как было сортировано по кнопке" не выходит. Поэтому возможно менять модель и есть разумно. Ну то уже Вам виднее. Название: Re: QTablewidget выборочная сортировка Отправлено: CJ1 от Июль 31, 2012, 07:53 Igors Спасибо вам огромное просто!!!! Это то что нужно! Только еще вот с мелким изменением )))
Код: QTableWidget * tbl = ui->tableWidget; Вы просто меня спасли!!!! :) |