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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать значение поля QSqlTableModel зная индекс QTableView  (Прочитано 8165 раз)
vincent
Гость
« : Декабрь 04, 2009, 12:56 »

Помогите разобраться, пожалуйста, с ситуацией.
На форме есть объект QTableView, в констукторе формы происходит создание и инициализация объекта QSqlTableModel и модель указывается объекту QTableView - все работает нормально. Сейчас необходимо по двойному щелчку мыши по какой-либо строке таблицы (QTableView), например, вывести в окно отладки значение первого поля этой строки - как это реализовать?
Когда работа идет только с моделью QSqlTableModel - тут все понятно - используется model_name.record(id_record).value(name_value), а как быть в данной ситуации? И попутно еще вопрос - сами данные хранятся только в объекте QSqlTableModel или их можно еще получать и из объекта QTableView?
p/s: если вопрос слишком уж ламерский, не обессудьте Улыбающийся, дайте ссылочку тогда где можно почерпнуть информацию на эту тему.

Записан
GNU Dimarik
Гость
« Ответ #1 : Декабрь 04, 2009, 14:36 »

Если я все правильно понял,то когда происходит двойной клик на индексе модели ты хочешь получить доступ к этому индексу.
Ну есть как минимум 2 возможности
1) обработать сигнал void QAbstractItemView::doubleClicked(const QModelIndex & index)
2) Написать подкласс QTableView и переопределить там
virtual void QTableView::mouseDoubleClickEvent ( QMouseEvent * event )
что бы получить кликнутый индекс используй
QModelIndex QAbstractItemView::indexAt(const QPoint& point)
Записан
vincent
Гость
« Ответ #2 : Декабрь 04, 2009, 14:52 »

Если я все правильно понял....

Не совсем - индексы у меня уже есть Улыбающийся

Мне нужно было получить значение конретного поля запроса (столбца таблицы), сейчас сделал так:

Код
C++ (Qt)
void MainWindow::on_tableView_doubleClicked(QModelIndex index)
{
   qDebug() << " value "<< ui->tableView->model()->data(ui->tableView->model()->index(index.row(),0)).toInt();
}
 
получается что значение получаю из QTableView, а думал что нужно получать из QSqlTableModel (немного непривычно просто все организованно в QT Улыбающийся поэтому и возникают такие вопросы)
Записан
MoPDoBoPoT
Гость
« Ответ #3 : Декабрь 04, 2009, 16:08 »

По сути, GNU Dimarik дал тебе правильный ответ, только не разжованный  Улыбающийся

получается что значение получаю из QTableView, а думал что нужно получать из QSqlTableModel
Так ты и получаешь значения из QSqlTableModel, ведь в модели хранятся данные, а представление лишь отображает их. Просто представление предоставляет интерфейс доступа к ее модели - tableView->model(), которым ты воспользовался. Можешь убедится в этом, заменив tableView->model()->... на sqlModel->...
Записан
vincent
Гость
« Ответ #4 : Декабрь 04, 2009, 20:28 »

MoPDoBoPoT

Спасибо за разъяснения.  Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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