Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Flakes от Август 17, 2008, 20:25



Название: selectionChanged сигнал для QTableView
Отправлено: Flakes от Август 17, 2008, 20:25
Очередной нубовский вопрос.

Для QTableView нет никаких сигналов на случай пользователь куда/чего нажал, и так же как быть с selectedIndexes(): как например это все есть в QTableWidget, но из QTableWidget я не могу добраться до setModel() и прикрутить QSqlTableModel, приватный метод. Просто замкнутый круг...


Название: Re: selectionChanged сигнал для QTableView
Отправлено: ритт от Август 17, 2008, 21:25
искать по форуму
читать доки по айтемвью + селекшнмодель


Название: Re: selectionChanged сигнал для QTableView
Отправлено: Flakes от Август 18, 2008, 01:28
Я вроде бы как разобрался, но самое главное осталось.

Сделал 2 QTableView, на обоих поставил одну и ту же QItemSelectionModel, то есть бегая по итемам одной таблицы - тоже самое отражается в другой. Однако если я пытаюсь работать с сигналами, например selectionChanged, ниче не происходит. Может я не правильно коннект делаю, или не вовремя?

Код:
connect(tableView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)),
this,
SLOT(mySlot())
);


Название: Re: selectionChanged сигнал для QTableView
Отправлено: ритт от Август 18, 2008, 02:34
Код:
connect(tableView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
this,
SLOT(mySlot())
);
и я не уверен, что selectionModel одной вьюхи можно устанавливать в другую. мб на вьюхах с общей моделью и прокатит


Название: Re: selectionChanged сигнал для QTableView
Отправлено: Flakes от Август 18, 2008, 02:58
и я не уверен, что selectionModel одной вьюхи можно устанавливать в другую. мб на вьюхах с общей моделью и прокатит

все можно, тут рассказано (http://doc.trolltech.com/4.3/model-view-view.html#sharing-selections-between-views). Но ваша поправка погоды не сделала, ну не хочет оно сигналами пользоваться...

Спасайте, тону!


Название: Re: selectionChanged сигнал для QTableView
Отправлено: Alex03 от Август 18, 2008, 06:28
Может я не правильно коннект делаю, или не вовремя?

Цитировать
connect(tableView->selectionModel(),
   SIGNAL(selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)),
   this,
   SLOT(mySlot())
);

Цитировать
Note that the signal and slots parameters must not contain any variable names, only the type.



Название: Re: selectionChanged сигнал для QTableView
Отправлено: ритт от Август 18, 2008, 12:35
тогда покажи код...а то все догадываться должны как именно ты тонешь :)


Название: Re: selectionChanged сигнал для QTableView
Отправлено: Flakes от Август 18, 2008, 14:16
сделал connect на примере Cached Table Example (http://doc.trolltech.com/4.2/sql-cachedtable.html), работает... сейчас я покапаю свой код, если разберусь - скажу в чем было дело  :)

UPD: сделал у себя коннект после tableView->setModel(model) - заработало. Я думал QItemSelectionModel и QAbstractItemModel никак не связаны.

Цитировать
Note that the signal and slots parameters must not contain any variable names, only the type.

А вот про это я не знал, юзал то этого с переменными - не ругалась.

Всем спасибо!


Название: Re: selectionChanged сигнал для QTableView
Отправлено: ритт от Август 18, 2008, 14:37
Цитировать
void QAbstractItemView::setSelectionModel ( QItemSelectionModel * selectionModel )   [virtual]
Sets the current selection model to the given selectionModel.
Note that, if you call setModel() after this function, the given selectionModel will be replaced by one created by the view.


Название: Re: selectionChanged сигнал для QTableView
Отправлено: ритт от Август 18, 2008, 14:40
Цитировать
The ability to control the selection model used by a view is useful when we want to provide multiple consistent views onto the same model data.
я оказался прав - шарить селекшнмодель между вьюхами можно только для общей исходной модели :)