Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Модель/Представление _ QSqlRelationalTableMode, сортировка выпадающего списка в QTableView

Автор: maint 10.4.2015, 5:20

Есть конструкция

model = new QSqlRelationalTableModel;
model->setTable(...);
model->setRelation(2, QSqlRelation("table", "id", "name"));

ui->view->setModel(model);
ui->view->setItemDelegate(new QSqlRelationalDelegate(ui->view));

В самом выпадающем списке сортировка происходит по id. Кто подскажет как сделать сортировку по name? Ничего в голову не приходит

Автор: lanz 14.4.2015, 14:59

http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html ?

Автор: maint 14.4.2015, 15:03

Цитата(lanz @ 14.4.2015, 19:59) *
http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html ?

это тут при чем? Мне сортировать не таблицу, а выпадающий combobox, который relation определен

Автор: lanz 14.4.2015, 15:08

А какая разница? Вешаете на свою модель QSortFilterProxyModel, а уже ее передаете в комбобокс. Не забудьте только потом перемаппить индексы.

Автор: maint 14.4.2015, 15:18

Цитата(lanz @ 14.4.2015, 20:08) *
А какая разница? Вешаете на свою модель QSortFilterProxyModel, а уже ее передаете в комбобокс. Не забудьте только потом перемаппить индексы.

вы текст смотрели?
куда передать, вот описание столбца model->setRelation(2, QSqlRelation("table", "id", "name"));

Автор: lanz 14.4.2015, 15:23

Конечно нет :lol:
В вашем случае можно попробовать
http://doc.qt.io/qt-4.8/qsqlrelationaltablemodel.html#relationModel
И у этой можели вызвать setSort по нужной колонке. Потом возможно нужен будет select, надо будет вечером попробовать.

Автор: maint 14.4.2015, 15:32

Цитата(lanz @ 14.4.2015, 20:23) *
Конечно нет :lol:
В вашем случае можно попробовать
http://doc.qt.io/qt-4.8/qsqlrelationaltablemodel.html#relationModel
И у этой можели вызвать setSort по нужной колонке. Потом возможно нужен будет select, надо будет вечером попробовать.

если бы можно было вызвать setSort я бы сделал. Не прокатывает

Автор: lanz 14.4.2015, 16:56

Цитата
Не прокатывает

Не вызывается? Или не сортирует?

Автор: maint 14.4.2015, 17:02

Цитата(lanz @ 14.4.2015, 21:56) *
Цитата
Не прокатывает

Не вызывается? Или не сортирует?

не сортирует

Автор: lanz 14.4.2015, 21:35

У меня сортирует, см. вложение :lol:
Единственный подвох - если foreign key в дочерней таблице называется как один из столбцов в основной, его шатает.


 scratch2.zip ( 2.05 килобайт ) : 243
 

Автор: maint 15.4.2015, 4:55

Цитата(lanz @ 15.4.2015, 2:35) *
У меня сортирует, см. вложение :lol:
Единственный подвох - если foreign key в дочерней таблице называется как один из столбцов в основной, его шатает.

блин, хорошо что дали пример. Глаз замылился, перепутал в this->mdl->relationModel( 7 )->setSort( ФИГНЯ, Qt::AscendingOrder )^ там где ФИГНЯ, не тот номер столбца ставил. В ваш пример влебил базу и все сработало :lol:

Автор: lanz 15.4.2015, 9:11

Цитата
Глаз замылился, перепутал в this->mdl->relationModel( 7 )->setSort( ФИГНЯ, Qt::AscendingOrder )^

Самое смешное, когда писал пример, сначала в этом же самом месте поставил неправильный номер столбца :lol:

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)