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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Взаимодействие пользователя с отображенными результатами запроса  (Прочитано 3277 раз)
Мария
Гость
« : Апрель 15, 2011, 13:06 »

Здравствуйте, я новичок в QT. У меня такая проблема,  нужно отобразить на экран результат sql запроса, пользовотель должен выбрать строку, нажать ОК и приложение переходит к следующему окну. Пока только у меня получилось отобразить результат запроса с помощью QSqlQueryModel и QTableView, но что делать дальше не знаю. Нужно :
- чтоб при клике на любое поле строки выделялась вся строка
- как-то отловить выделенную сткоку, вернее значение ее первого поля.
Записан
pokidoff
Гость
« Ответ #1 : Апрель 15, 2011, 13:14 »

Для выделения строками в свойствах QTableView:
selectionMode = SingleSelection;
selectionBehavior = SelectRows;

Для получения первой колонки модели [ID строки, я так понимаю =) ]:
Код:
void MainWindow::on_tableViewClick(QModelIndex index){

    QVariant value = index.model()->index(index.row()/*Номер строки*/ ,0/*Номер колонки*/).data();

}
« Последнее редактирование: Апрель 15, 2011, 13:18 от pokidoff » Записан
Мария
Гость
« Ответ #2 : Апрель 15, 2011, 15:37 »

Спасибо, с selectionMode = SingleSelection и selectionBehavior = SelectRows все получилось.
По поводу колонки не очень понятно: в процедуру передается QModelIndex, а как его получить, если неизвестно, какую строку пользователь выберет. Т.е. мне нуно как-то получить QModelIndex именно выделенной пользователем строки.

Записан
mutineer
Гость
« Ответ #3 : Апрель 15, 2011, 15:41 »

QTableView испускает сигнал, в котором передает индекс выбранного элемента. подключаешь этот сигнал к слоту и имеешь индекс
Записан
pokidoff
Гость
« Ответ #4 : Апрель 15, 2011, 15:44 »

Приведенный выше метод - это слот.

Код
C++ (Qt)
connect(ui->tableView, SIGNAL(clicked (QModelIndex )), this, SLOT(on_tableViewClicked(QModelIndex));
 

или в дизайнере пр. кл. по tableView -> перейти к слоту-> clicked(QModelIndex);

Сигнал - это событие, которое таблица посылает при клике по строке. Он несет нужный индекс и ни откуда его брать не надо.
Записан
Мария
Гость
« Ответ #5 : Апрель 15, 2011, 16:21 »

Спасибо! Получилось! А существует такой сигнал doubleclicked?
Записан
mutineer
Гость
« Ответ #6 : Апрель 15, 2011, 16:23 »

Спасибо! Получилось! А существует такой сигнал doubleclicked?

Существует и в документации его можно увидеть
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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