Russian Qt Forum

Qt => Model-View (MV) => Тема начата: sinj от Июнь 08, 2009, 15:17



Название: tableview
Отправлено: sinj от Июнь 08, 2009, 15:17
добрый день!

Такой вопрос: в сабж загружены некоторые значения. Необходимо по дабл-клику из строки выбрать столбец, допустим под номером 3 и присвоить некоторой текстовой переменной его значение. Использую QSqlQueryModel. Нашел на форуме несколько тем по данному вопросу, но сам разобраться не смог. Подскажите, как это реализуется!


Название: Re: tableview
Отправлено: ритт от Июнь 08, 2009, 15:24
QSqlQueryModel - модель для отображения результатов запроса. всё.


Название: Re: tableview
Отправлено: sinj от Июнь 08, 2009, 15:31
так как мне получить в множестве строк- ту на которую два раза щелкнул и из нее выбрать значение допустим 3 столбца?


Название: Re: tableview
Отправлено: lit-uriy от Июнь 08, 2009, 15:46
см. общее описание: Обработка выбора элементов в представлениях (http://doc.crossplatform.ru/qt/4.5.0/model-view-selection.html)


Название: Re: tableview
Отправлено: sinj от Июнь 08, 2009, 15:57
спс, попробую разобраться. Тем не менее остается такой вопрос: надо обработать щелчок мыши на таблвью. и потом, как я понимаю использовать     

Цитировать
QModelIndex topLeft;
QModelIndex bottomRight;

topLeft = model->index(0, 0, QModelIndex());
bottomRight = model->index(5, 2, QModelIndex());
далее по тексту...


Название: Re: tableview
Отправлено: ритт от Июнь 08, 2009, 16:10
ах, так модифицировать результат не предполагается? тогда извиняюсь...

QModelIndex index = model->index(row, column, parent);
QVariant data = model->data(index, Qt::EditRole);


Название: Re: tableview
Отправлено: sinj от Июнь 08, 2009, 16:20
да, результат нужен только для того, чтобы дать его значение некоторой переменной. Если я правильно понял
Цитировать
QModelIndex index = model->index(row, column, parent);
QVariant data = model->data(index, Qt::EditRole);

row-номер строки в модели
column-номер столбца в модели
parent -даже не могу предположить

и как все это увязать с имеемой таблвью? Т.е. как мне в проекте моем нужно это и где описывать (предполагаю, что в слоте clicked) и, если вас не затруднит, то напишите поподробнее)


Название: Re: tableview
Отправлено: lit-uriy от Июнь 08, 2009, 16:24
sinj, это уже описано, читай "Программирование Модель/Представление (http://doc.crossplatform.ru/qt/4.5.0/model-view-programming.html)", там на русском.


Название: Re: tableview
Отправлено: ритт от Июнь 08, 2009, 16:36
sinj, вот код: model->selectionMode() + читай доки по QItemSelectionModel - там всё примитивно.


Название: Re: tableview
Отправлено: sinj от Июнь 08, 2009, 16:51
 :) Действительно, все очень просто. Спасибо за целеуказание))


Название: Re: tableview
Отправлено: sinj от Июнь 18, 2009, 09:22
Изучил. Отпал ряд вопросов. Но с текущим не разобрался. Прошу помощи. Попробую сформулировать вопрос конкретнее:
1. В tableview уже загружена таблица
2. Описываю функцию по дабл клику на tableview
3. При дабл клике нужно выделить всю строку, на которую кликал мышью
4. Из заданной выделенной строки нужно получить значение например в третьем столбце
 
Не выходит, блин... Объясните.


Название: Re: tableview
Отправлено: spectre71 от Июнь 18, 2009, 10:50
Изучил. Отпал ряд вопросов. Но с текущим не разобрался. Прошу помощи. Попробую сформулировать вопрос конкретнее:
1. В tableview уже загружена таблица
2. Описываю функцию по дабл клику на tableview
3. При дабл клике нужно выделить всю строку, на которую кликал мышью
4. Из заданной выделенной строки нужно получить значение например в третьем столбце
 
Не выходит, блин... Объясните.
1)  Переопредели
virtual void mouseDoubleClickEvent ( QMouseEvent * event )
2) Получи ModelIndex
QModelIndex Index = tableview->indexAt(event->pos());
3) Селектируй строку
tableview->selectionModel()->select ( const QItemSelection & selection, QItemSelectionModel::SelectionFlags command )