Название: Реализация блоков для визуального программирования Отправлено: AlexZ от Апрель 11, 2017, 18:41 Всем привет. С помощью чего лучше реализовать блоки для визуального программирования? Например как тут (https://www.youtube.com/watch?v=pOgaVxv6Llw&t=36s).
1. Если через QGraphicsObject, то как можно в блок вставить QLineEdit и другие виджеты? 2. Возможно ли это сделать создав свой виджет? И если да, то как запихать его в что-то типа QGraphicsScene? Название: Re: Реализация блоков для визуального программирования Отправлено: gil9red от Апрель 11, 2017, 20:29 Порядок действий:
;D В описании того репозитория была ссылка на русскоязычную статью о том как автор разрабатывал: http://ilgarlunin.blogspot.ru/2015/09/blog-post.html Название: Re: Реализация блоков для визуального программирования Отправлено: AlexZ от Апрель 12, 2017, 06:53 Спасибо за ответ. Ссылки видел, но статью как-то проглядел. Появились еще вопросы:
1. Насколько Qt для питона отличается от Qt для C++? 2. Из статьи не понятно как автор запихал в ноды Qt-ые виджеты. И правильно ли он делал? Собственно мне нужно реализовать ноды, которые можно было бы запихать в QGraphicsScene и которые бы поддерживали Qt-ые виджеты(QLineEdit и т.д.). Хотелось бы узнать мнение у местных старожил, с помощью чего правильно это сделать и в какую сторону копать. P.S. На сколько я понял из других тем, то можно попробовать через QGraphicsProxyWidget. Название: Re: Реализация блоков для визуального программирования Отправлено: gil9red от Апрель 12, 2017, 07:35 1. Ничем. Тот же Qt, но с привязкой к питону. Даже Qt'шные dll'ки можно найти (https://bitbucket.org/ilgarlunin/nodes/src/c26742c9492041d636143b4a0848d1c30952ba97/Python27/Lib/site-packages/PySide/?at=master)
Название: Re: Реализация блоков для визуального программирования Отправлено: Zerkin от Апрель 12, 2017, 12:10 Прокси виджеты, вы копаете в правильную сторону.
Название: Re: Реализация блоков для визуального программирования Отправлено: Day от Апрель 12, 2017, 15:39 Что-то в таком роде
Код: QLineEdit *LE = new QLineEdit(); Название: Re: Реализация блоков для визуального программирования Отправлено: AlexZ от Апрель 15, 2017, 11:38 Всем спасибо за ответы и помощь. В общем для теста сделал так:
Отнаследовался от QGraphicsProxyWidget: .h файл Код: #include <QGraphicsProxyWidget> .cpp файл Код: #include "customwidget.h" появились 2 проблемы: 1. Когда перемещаешь графический объект за границы view, а потом скроллом перемещаешь view на графичекий объект, то возникают глюки с отрисовкой. Перерисовывается только графический объект, а виджет нет. И такое ощущение, что перерисовка идет поверх старого объекта , ибо по обводке можно заметить, что ее толщина в некоторых местах разная. Причем с объектом, который был заспавнен на сцену первым, все нормально. скриншот (https://i89.fastpic.ru/big/2017/0415/e6/bf0e1a00eeff1491078c115be8b605e6.jpg). 2. После действий связанных с ресайзом окон появляются также баги с отрисовкой. скриншот (https://i91.fastpic.ru/big/2017/0415/fa/1ed28f5227535defcec4793dc6bb2cfa.jpg). Код добавления графического блока: Код: void MainWindow::on_addBlock_clicked() { Подскажите пожалуйста, как исправить отрисовку? Может нужно еще какой-нибудь метод перегрузить у прокси виджета? Название: Re: Реализация блоков для визуального программирования Отправлено: lit-uriy от Апрель 20, 2017, 07:32 В блоге Qt было упоминание того, что виджеты воткнутые в графическую сцену - ересь, которой не следует пользоваться. И сделана она была необдуманно под давлением общественности.
П.С. Я перестал делать наследников QGraphicsProxyWidget, т.к. это довольно часто приводит к глюкам. Просто добавляю виджеты через QGraphicsProxyWidget. Название: Re: Реализация блоков для визуального программирования Отправлено: Igors от Апрель 20, 2017, 11:42 Лично я не увидел здесь особых выгод QGraphicsScene и реализовал подобную задачу на QPainter. В любом случае больное место - размещение "блоков", напр чтобы воткнуть новый юзеру приходится делать массу телодвижений (куда-то подвинуть имеющиеся и.т.п)
|