Russian Qt Forum
Октябрь 01, 2024, 18:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QTablewidget выборочная сортировка (Решено)  (Прочитано 9051 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Июль 30, 2012, 16:00 »

Блиииин! Не то! Так строки не сортируются, они только как попало местами меняются! Плачущий
Проект выкладывайте - быстрее дело будет
Записан
CJ1
Гость
« Ответ #16 : Июль 30, 2012, 16:04 »

Проект состоит из клиента, сервера, и огромной БД на mysql. Это законченный проект для фирмы, который я написал! Но они потребовали дебильную сортировку!

Тоесть в точности как в excell есть функция сортировать от А до Я
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Июль 30, 2012, 16:10 »

Проект состоит из клиента, сервера, и огромной БД на mysql. Это законченный проект для фирмы, который я написал! Но они потребовали дебильную сортировку!

Тоесть в точности как в excell есть функция сортировать от А до Я
Никто и не просил полный рабочий проект. Нарисуйте окно с таблицей, заполните чем-нибудь, подключите кнопку - вот и все.

Edit: подразумевается что общая сортировка выключена - айтемы показываются в том порядке что были созданы. Если это не так то конечно будет месить хтозна-шо
« Последнее редактирование: Июль 30, 2012, 16:12 от Igors » Записан
CJ1
Гость
« Ответ #18 : Июль 30, 2012, 16:24 »

Вот! http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html

Строки должны сортироваться чтоб получилось

а строка а
б строка б
с строка с
р строка р
Записан
DmitryM
Гость
« Ответ #19 : Июль 30, 2012, 17:02 »

У вбюшки есть свойство sortingEnabled, кликаешь по шапке столбца и все сортируется.
Код
C++ (Qt)
void sortByColumn ( int column, Qt::SortOrder order )
Qt::SortOrder:
Qt::AscendingOrder 0 The items are sorted ascending e.g. starts with 'AAA' ends with 'ZZZ' in Latin-1 locales
Qt::DescendingOrder 1 The items are sorted descending e.g. starts with 'ZZZ' ends with 'AAA' in Latin-1 locales
 
Ну и пишешь QSortFilterProxyModel
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Июль 30, 2012, 18:31 »

Вот! http://narod.ru/disk/58404876001.4feb231b71ca0bd74654a575cee996f4/mmm.rar.html

Строки должны сортироваться чтоб получилось

а строка а
б строка б
с строка с
р строка р
В аттаче измененные файлы. Запускаете выбираете ячейки, давите кнопку. Используется метод "грубой силы" - меняется сама модель. Чтобы вернуть взад Вам придется перезарядить всю модель (т.е. где-то хранить еще и исходные данные).

Понятно что нормальным, цивильным решением вроде выглядит QSortFilterProxyModel. Однако я затрудняюсь написать такую сортировку - она получается нетранзитивной. И хз как это должно работать - ну ладно, как-то отсортировали, потом selection изменилось - опять сортировать или как? Ведь "оставить как было сортировано по кнопке" не выходит. Поэтому возможно менять модель и есть разумно. Ну то уже Вам виднее.
Записан
CJ1
Гость
« Ответ #21 : Июль 31, 2012, 07:53 »

Igors Спасибо вам огромное просто!!!! Это то что нужно! Только еще вот с мелким изменением )))
Код:
    QTableWidget * tbl = ui->tableWidget;

    QList <QTableWidgetItem *> nlst = tbl->selectedItems();
    QList <QTableWidgetItem *> lst;
    int testcolumn = nlst[0]->column();
    for (int i = 0; i < nlst.count(); i++){
        if (nlst[i]->column() == testcolumn){
            lst.push_back(nlst[i]);
        }
    }

    if (!lst.size()) return;


Вы просто меня спасли!!!!  Улыбающийся
« Последнее редактирование: Июль 31, 2012, 08:19 от CJ1 » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.069 секунд. Запросов: 22.