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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как позиционировать QSqlRelationalTableModel/View ?  (Прочитано 3517 раз)
rv
Гость
« : Январь 22, 2007, 20:01 »

Стандартное использование Model/View в части SQL:
Определены QSqlRelationalTableModel с запросом QSqlQuery, всё отображается в QTableView.

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

Как я понимаю, позиционирование можно осуществить следующими путями:
1. Саму таблицу:
Код:

 QTableViewselectRow( row )

2. Спозиционировать, используя QSelectionModel:
Код:

model              = self.ui.tableView.model();
selectionModel  = self.ui.tableView.selectionModel();
topLeft             = model.index( row, 0, QModelIndex());
selection          = QItemSelection(topLeft, topLeft);
selectionModel.select(selection, QItemSelectionModel::Select);


Варианты 1 и 2 работают, но буссмысленны в моём случае, потому что я не знаю номера строки.

3. (Не работает). Попытался спозиционировать через QTableView.model().query():
Код:

        model = self.ui.tableView.model()
        query = model.query()
        query.seek(row)

- ничего осязаемого не происходит.

Не будучи спецом по БД, я всё же подразумеваю, что нужно использовать вторичную выборку или же как-то похоже на вариант 3), т.е. двигать курсор выборки.

Как это сделать правильно? (Варианты вроде сделать ещё одно окно и там выводить только интересующую запись не устраивают, потому что пользователю требуется чтобы таблица была постоянно спозиционирована (центрирована) на интересующую его запись)

[/code]
Записан
nova
Гость
« Ответ #1 : Январь 22, 2007, 20:57 »

Цитировать

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

В каком смысле - одной из  использованных таблиц :?:
Ты получаеш ОДНУ таблицу !!!

можеш попробовать так:
Код:

  QItemSelectionModel *selectionModel = paymentsView->selectionModel();
  selectionModel->clearSelection();
  paymentsView->scrollToTop();
  QModelIndexList list=orderModel->match(orderModel->index(0, 0),0,acc);
  if(!list.isEmpty())
  {
    selectionModel->setCurrentIndex (list.first(),QItemSelectionModel::Rows|
                                    QItemSelectionModel::Select|QItemSelectionModel::ClearAndSelect);
    paymentsView->scrollTo(orderModel->index(list.first().row(), 1));
  }
Записан
rv
Гость
« Ответ #2 : Январь 24, 2007, 19:30 »

выборки из выборки или позиционирования курсора выборки.
Насколько я понял, позиционирование QSqlQuery не влияет на model/view
Записан
nova
Гость
« Ответ #3 : Январь 24, 2007, 20:31 »

Цитата: "rv"
выборки из выборки или позиционирования курсора выборки.
:shock: :?:  :lol:
Цитата: "rv"

Насколько я понял, позиционирование QSqlQuery не влияет на model/view

нет не влияет
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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