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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с таблицами  (Прочитано 4653 раз)
slava_d200
Гость
« : Январь 29, 2012, 12:07 »

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

суть вопроса.
надо создать таблицу (не визуальную)
туда поместить данные.
а потом их отсортировать.
и после сортировки их выбрать.
сортировка может быть по нескольким колонкам.

Вопрос следующий:
В какую сторону копать?

Записан
twp
Гость
« Ответ #1 : Январь 29, 2012, 12:14 »

SQL + QtSQL модуль
Записан
slava_d200
Гость
« Ответ #2 : Январь 29, 2012, 12:15 »

SQL + QtSQL модуль

нет это не работа с SQL.
Записан
twp
Гость
« Ответ #3 : Январь 29, 2012, 12:18 »

ок, будет интересно узнать другой способ  Улыбающийся
Записан
BuRn
Гость
« Ответ #4 : Январь 29, 2012, 12:44 »

Цитировать
надо создать таблицу (не визуальную)
как - то уже не понятно ... Список что ли нужен ?
Записан
slava_d200
Гость
« Ответ #5 : Январь 29, 2012, 12:49 »

Цитировать
надо создать таблицу (не визуальную)
как - то уже не понятно ... Список что ли нужен ?

новерно список - с возможностью сортировки этого списка по внутренним полям класса в списке Улыбающийся
(я же выше писал что все ассоцируется с 1С - поэтому новерно и некорректно вопросы задаю)
« Последнее редактирование: Январь 29, 2012, 12:51 от slava_d200 » Записан
twp
Гость
« Ответ #6 : Январь 29, 2012, 12:51 »

скорее QStandardItemModel или сделать самому модель. Просто сортировки по нескольким колонкам в QStandardItemModel нет
Записан
slava_d200
Гость
« Ответ #7 : Январь 29, 2012, 13:53 »

а если не надо отображать визуально данный список?
т.е.

1.данные (свой класс) запихать в список.
2.отсортировать данный список согласно критерию.
3. поработать с данным списком. (уже отсортированным)
« Последнее редактирование: Январь 29, 2012, 13:58 от slava_d200 » Записан
twp
Гость
« Ответ #8 : Январь 29, 2012, 14:15 »

если нужен список то это QList, сортировка делается функциями qSort или qStableSort, но для этого в твоем классе должен быть определен оператор <
Записан
slava_d200
Гость
« Ответ #9 : Январь 29, 2012, 15:15 »

ну это не спасет по поводу сортировки по нескольким элементов.
т.е.
делаем вывод что надо создвать виртуальную таблицу SQL
туда засовывать данные.
делать запрос с сортировкой и результат обратно всовывать в список  Непонимающий
Записан
BuRn
Гость
« Ответ #10 : Январь 29, 2012, 18:13 »

если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list
Записан
slava_d200
Гость
« Ответ #11 : Январь 29, 2012, 19:43 »

если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list

что то непойму.
а дальше как ?
Записан
twp
Гость
« Ответ #12 : Январь 29, 2012, 20:13 »

ну это не спасет по поводу сортировки по нескольким элементов.
т.е.
делаем вывод что надо создвать виртуальную таблицу SQL
туда засовывать данные.
делать запрос с сортировкой и результат обратно всовывать в список  Непонимающий
оператор < как раз и служит для этого. Если допустим в классе есть три поля f1, f2 и f3 и порядок сортировки f3, f2, f1 то вот примерная реализация:
Код
C++ (Qt)
class Foo
{
public:
   ...
private:
   int f1;
   int f2;
   int f3;
};
 
bool operator<(const Foo &foo1, const Foo &foo2)
{
   if (foo1.f3 < foo2.f3)
       return true;
   if (foo1.f3 > foo2.f3)
       return false;
 
   if (foo1.f2 < foo2.f2)
       return true;
   if (foo1.f2 > foo2.f2)
       return false;
 
   if (foo1.f1 < foo2.f1)
       return true;
   return false;
}
 
Записан
BuRn
Гость
« Ответ #13 : Январь 29, 2012, 22:34 »

если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list

что то непойму.
а дальше как ?
а дальше просто заполняешь структуру своими данными и добавляешь в свой list а дальше делай со списком  что хочешь
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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