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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: selectionChanged сигнал для QTableView  (Прочитано 12098 раз)
Flakes
Гость
« : Август 17, 2008, 20:25 »

Очередной нубовский вопрос.

Для QTableView нет никаких сигналов на случай пользователь куда/чего нажал, и так же как быть с selectedIndexes(): как например это все есть в QTableWidget, но из QTableWidget я не могу добраться до setModel() и прикрутить QSqlTableModel, приватный метод. Просто замкнутый круг...
Записан
ритт
Гость
« Ответ #1 : Август 17, 2008, 21:25 »

искать по форуму
читать доки по айтемвью + селекшнмодель
Записан
Flakes
Гость
« Ответ #2 : Август 18, 2008, 01:28 »

Я вроде бы как разобрался, но самое главное осталось.

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

Код:
connect(tableView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection & selected, const QItemSelection & deselected)),
this,
SLOT(mySlot())
);
Записан
ритт
Гость
« Ответ #3 : Август 18, 2008, 02:34 »

Код:
connect(tableView->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
this,
SLOT(mySlot())
);
и я не уверен, что selectionModel одной вьюхи можно устанавливать в другую. мб на вьюхах с общей моделью и прокатит
Записан
Flakes
Гость
« Ответ #4 : Август 18, 2008, 02:58 »

и я не уверен, что selectionModel одной вьюхи можно устанавливать в другую. мб на вьюхах с общей моделью и прокатит

все можно, тут рассказано. Но ваша поправка погоды не сделала, ну не хочет оно сигналами пользоваться...

Спасайте, тону!
Записан
Alex03
Гость
« Ответ #5 : Август 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.

Записан
ритт
Гость
« Ответ #6 : Август 18, 2008, 12:35 »

тогда покажи код...а то все догадываться должны как именно ты тонешь Улыбающийся
Записан
Flakes
Гость
« Ответ #7 : Август 18, 2008, 14:16 »

сделал connect на примере Cached Table Example, работает... сейчас я покапаю свой код, если разберусь - скажу в чем было дело  Улыбающийся

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

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

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

Всем спасибо!
« Последнее редактирование: Август 18, 2008, 14:41 от Flakes » Записан
ритт
Гость
« Ответ #8 : Август 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.
Записан
ритт
Гость
« Ответ #9 : Август 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.
я оказался прав - шарить селекшнмодель между вьюхами можно только для общей исходной модели Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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