![]() |
|
|
![]()
|
|
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день, коллеги! Ситуация такая: рисую граф, использую для этого QGraphicsView и QGraphicsScene() все как полагается. Тут приспичило для этого графа еще отображать информацию по ветвям и узлам в табличках. У ветвей своя табличка и у узлов своя. И встал вопрос, как это сделать грамотно, как использовать несколько представлений QTableView(в моему случае два) совместно с графическим представлением QGraphicsView и одной общей моделью?
Сейчас у меня сделано так, все данные хранятся в QGraphicsScene() , она же можно сказать и используется в качестве модели. Для табличного представления ветвей и узлов использую QTableWidget, поскольку данные вывожу обычные, текстовые. Нормально ли так как сделал или уже получается спортивный велосипед? Это сообщение отредактировал(а) becks - 6.12.2012, 15:55 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Раз говоришь о модели - нужно использовать QTableView, а не QTableWidget.
В модели (унаследованной от QAbstractTableModel или QAbstractItemModel) хранишь указатель на QGraphicsScene и она берёт данные из сцены или создаёт объекты для сцены по своим данным. Указатель на сцену хранишь только в модели и получаешь его только для задания её в QGraphicsView. |
|||
|
||||
| becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Да, я понимаю разницу между вьюшкой и виджетом. Просто изначально стояла задача рисовать только граф и ни о каких таблицах речи не шло. Поэтому, конечно же, все данные у меня хранились в QGraphicsScene. Теперь, когда появились таблицы, я использую для них виджеты, а данные беру из QGraphicsScene и частично дублирую в этих виджетах, просто из-за того что реализовать это было быстрее чем вьюшки. Сейчас все работает, тормозов вроде нет, но на лицо, очевидная костыльность. Дублирование данных, появляются новые операции над данными, приходится дублировать по виджетам и т.п. Посему и встал вопрос, стоит ли переделывать то, что уже работает на очевидно более правильное решение с точки зрения архитектуры, так, как вы(math64) мне посоветовали. Или всеже такое решение, которое сейчас существует тоже годно? Это сообщение отредактировал(а) becks - 7.12.2012, 11:47 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
То, что предлагаю я, компромисс между двумя вариантами.
В сцену добавляешь сигналы об изменениях и коннектишь их со слотами модели. Модель в слотах запоминает изменения и информирует о них таблицу. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |