Russian Qt Forum

Qt => Вопросы новичков => Тема начата: slava_d200 от Январь 29, 2012, 12:07



Название: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 12:07
если вопрос тревиальный - сорри.
в основном пишу на 1С в результате все что я хочу, ассоцируется как это сделано в 1С.

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

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



Название: Re: Работа с таблицами
Отправлено: twp от Январь 29, 2012, 12:14
SQL + QtSQL модуль


Название: Re: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 12:15
SQL + QtSQL модуль

нет это не работа с SQL.


Название: Re: Работа с таблицами
Отправлено: twp от Январь 29, 2012, 12:18
ок, будет интересно узнать другой способ  :)


Название: Re: Работа с таблицами
Отправлено: BuRn от Январь 29, 2012, 12:44
Цитировать
надо создать таблицу (не визуальную)
как - то уже не понятно ... Список что ли нужен ?


Название: Re: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 12:49
Цитировать
надо создать таблицу (не визуальную)
как - то уже не понятно ... Список что ли нужен ?

новерно список - с возможностью сортировки этого списка по внутренним полям класса в списке :)
(я же выше писал что все ассоцируется с 1С - поэтому новерно и некорректно вопросы задаю)


Название: Re: Работа с таблицами
Отправлено: twp от Январь 29, 2012, 12:51
скорее QStandardItemModel или сделать самому модель. Просто сортировки по нескольким колонкам в QStandardItemModel нет


Название: Re: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 13:53
а если не надо отображать визуально данный список?
т.е.

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


Название: Re: Работа с таблицами
Отправлено: twp от Январь 29, 2012, 14:15
если нужен список то это QList, сортировка делается функциями qSort или qStableSort, но для этого в твоем классе должен быть определен оператор <


Название: Re: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 15:15
ну это не спасет по поводу сортировки по нескольким элементов.
т.е.
делаем вывод что надо создвать виртуальную таблицу SQL
туда засовывать данные.
делать запрос с сортировкой и результат обратно всовывать в список  ???


Название: Re: Работа с таблицами
Отправлено: BuRn от Январь 29, 2012, 18:13
если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list


Название: Re: Работа с таблицами
Отправлено: slava_d200 от Январь 29, 2012, 19:43
если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list

что то непойму.
а дальше как ?


Название: Re: Работа с таблицами
Отправлено: twp от Январь 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;
}
 


Название: Re: Работа с таблицами
Отправлено: BuRn от Январь 29, 2012, 22:34
если список то мои мысли
структура описывающая все твои поля и
vector <твоя струтктура *> list

что то непойму.
а дальше как ?
а дальше просто заполняешь структуру своими данными и добавляешь в свой list а дальше делай со списком  что хочешь