Russian Qt Forum
Ноябрь 26, 2024, 18:37
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
QGraphicsView + Виджеты.
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QGraphicsView + Виджеты. (Прочитано 14428 раз)
Bepec
Гость
QGraphicsView + Виджеты.
«
:
Январь 14, 2014, 10:04 »
Приветствую заглянувших.
Собственно поставил я себе цель написать не торопясь программу-аналог для построения UML схем. Точнее набраться практики по данному направлению разработки.
Чтобы было яснее - скриншот.
Подумал над архитектурой и решил что QGraphicsView и Scene будут в самый раз.
Создал виджет, запихнул его в Scene и понял, что взаимодействие виджетов со сценой не проработано (Qt 4.7.2). Передвигать нельзя, если пользоваться сторонними классами, взятыми с этого форума (для растягивания и перетягивания), то теряется фокус и прочие прелести.
Внимание, вопрос
:
1) Правильно ли я выбрал инструменты (QGraphicsView/Scene) или есть более подходящие.
2) Как лучше сделать?
QGraphicsItem с данными, с которым будет разбираться сцена.
Виджет с собственной логикой, внедрённый в Scene.
Пока это все вопросы, но в дальнейшем добавится больше.
PS если есть ссылки на уроки с QGraphicsView, то буду благодарен.
PPS долго сомневался куда засунуть тему. Не решил...
Записан
_OLEGator_
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #1 :
Январь 14, 2014, 10:54 »
Все верно, для такой задачи QGraphicsView/Scene подходит. Только не надо создавать виджет и пихать его в сцену, надо переопределять QGraphicsItem и от него плясать свои собственные айтемы.
Не понял, почему не удалось передвинуть виджет, этот механизм рабочий и в чем именно не проработано взаимодействие виджетов со сценой тоже не ясно.
Я достаточно плотно работал со сценой, так что могу помочь - задавай вопросы.
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: QGraphicsView + Виджеты.
«
Ответ #2 :
Январь 14, 2014, 11:29 »
Открою вам секрет, что программа которая на экране с вероятностью 95% написана с использованием GraphicsScene.
И зачем пихать виджеты на сцену? Вам нужно видеть поля ввода, комбобоксы и т.п. элементы ввода/вывода? На сколько я понял в диаграмах UML такие компоненты не используются,
поэтому достаточно переопределить свои элементы. Если нужно генерить сигналы наследуйтесь от GraphicsObject.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: QGraphicsView + Виджеты.
«
Ответ #3 :
Январь 14, 2014, 12:25 »
Цитата: Fregloin от Январь 14, 2014, 11:29
Открою вам секрет, что программа которая на экране с вероятностью 95% написана с использованием GraphicsScene.
Тут промах - Delphi 7 Update 1 (
http://staruml.sourceforge.net/en/development-setting.php
)
Да и на скриншоте Дельфовое наследие со всех щелей прёт (не говорю, что это плохо!).
Записан
Bepec
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #4 :
Январь 14, 2014, 20:38 »
to _OLEGator_:
При пробросе виджета через addWidget сцены, виджет не реагирует на попытки его перенести и флаг не помогает. Это не единичная проблема (тут пара тем на эту проблему есть.)
to Fregloin:
Нужны и поля ввода и автоподстановка. На скрине "неактивная схема" При наведении указателя появляются кнопочки работы с элементом. Разные поля - разные контекстные меню. В каждом поле можно щелкнуть и будет добавлен элемент в поле и открыт для редактирования, типа lineEdit.
Т.е. всё таки лучше наследоваться от graphicsItem'a и давать сцене решать все вопросы. А как быть с редактируемыми полями?
Т.е. graphicsItem создали, он красиво отрисовывает данные. И вот хочется их изменить - вызвать lineEdit что ли. Или самому придётся писать велосипед для этой цели?
PS извиняюсь за вопросы "без попыток", завтра отнаследуюсь и отпишусь ещё. Спасибо за ответы.
Записан
_OLEGator_
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #5 :
Январь 14, 2014, 20:47 »
Все виджеты работают на сцене и таскаются, в чем конкретно проблема?
Записан
Bepec
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #6 :
Январь 14, 2014, 22:15 »
Создаём собственный виджет, кидаем на него пару listWidget + lineEdit + label, добавляем компоновщик. Пихаем сие чудо в scene. Тык на него мышкой - а оно и не работает. Выставляем флаг itemMovable, реакция нулевая.
Записан
_OLEGator_
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #7 :
Январь 14, 2014, 22:23 »
Давай минимальный проект - с ним проще будет работать, не мне же его создавать.
Сейчас глянул - у сцены похоже до сих пор глюк с выделением QGraphicsProxyWidget остался - надо самому вызывать выделение по нажатию в режиме редактирования, тогда он и таскаться начнет:
http://www.qtcentre.org/threads/28434-Move-QGraphicsProxyWidget
Записан
Bepec
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #8 :
Январь 14, 2014, 22:25 »
Дико извиняюсь, но завтра. Сегодня башка раскалывается
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
Re: QGraphicsView + Виджеты.
«
Ответ #9 :
Январь 14, 2014, 22:52 »
Веселая тема
Я как то хотел аналог визио и инкскейпа сделать... Тоже на сцене, но это было еще кути 4.0, там сцена вообще отдельным солюшеном шла.
Но да, такое я бы только на сцене и делал. Не знаю за 4.8 и 5.х, но в 4.7 были дикие глюки с виджетами в ней...
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Bepec
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #10 :
Январь 15, 2014, 07:09 »
Пример, как и обещал. В архиве pro и sln (VS2008).
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QGraphicsView + Виджеты.
«
Ответ #11 :
Январь 15, 2014, 07:43 »
Цитата: Racheengel от Январь 14, 2014, 22:52
Но да, такое я бы только на сцене и делал.
Тем не менее designer у Qt-ишников сцену не использует)
Записан
Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
Re: QGraphicsView + Виджеты.
«
Ответ #12 :
Январь 15, 2014, 07:45 »
Я вот тут думаю, не написать ли свой велосипед.
Ибо пока не могу понять как сделать так, чтобы можно было редактор вызывать в итеме. Или над итемом. В общем пробую
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: QGraphicsView + Виджеты.
«
Ответ #13 :
Январь 15, 2014, 07:48 »
Цитата: Bepec от Январь 15, 2014, 07:45
Я вот тут думаю, не написать ли свой велосипед.
Ибо пока не могу понять как сделать так, чтобы можно было редактор вызывать в итеме. Или над итемом. В общем пробую
Обычно для таких целей используют невидимый айтем-виджет-контейнер, который уже будет и двигать и резайзить своего потомка.
Записан
Qt 5.11/4.8.7 (X11/Win)
Fregloin
Супер
Offline
Сообщений: 1025
Re: QGraphicsView + Виджеты.
«
Ответ #14 :
Январь 15, 2014, 11:19 »
В своей новой версии программы я именно так и сделал. Это намного лучше чем каждый элемент будет обрабатывать себя сам.
Записан
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...