QT4 Модульный синтезатор виджет редактирования
-
18-09-2019 - |
Вопрос
Я собираюсь начать писать графический интерфейс для приложения модульного синтеза (например, модульный синтезатор ALSA, чистые данные, Ingen), которое будет использоваться для редактирования патча (звука).
Что мне нужно сделать, так это что -то вроде этого:
(источник: Drobilla.net)
(источник: McGill.ca)
Таким образом, в основном, это область, где я могу нарисовать прямоугольники (коробки), которые представляют синтезаторные модули с входными и выходными портами, которые я могу подключаться к проводам.
Проблема в том, что я не могу понять, как двое создают виджет для области редактирования: использование простого контекста 2D рисунка, где я рисую коробки вручную Отличное управление событиями, которое дает мне QT.
Мне интересно, есть ли возможность создать пользовательский макет, который просто принимает координаты созданных «ящиков» и помещал их на экран, чтобы я реализовал коробки как подклассы Qwidget (и повторно использую систему обработки событий QT) и добавляю их к окну, как я обычно делаю.
Или, может быть, есть лучший способ?
Спасибо
Решение
Взгляните на QGraphicsScene и QGraphicsView. Таким образом, вы сможете создать сцену, заполненную предметами. Каждый предмет может получать события мыши, и вы можете вручную покрасить его.
Другие советы
Вы можете создать пользовательский класс макета, который наследует от Qlayout и перегружать функцию add (qwidget* w) с помощью координат.
Лично я использую QGraphicsView и QGraphicsScene. Вы можете справиться с некоторыми событиями (как событие мыши) и легко найти свой QGraphicSitem.
Взглянуть на Gephex SourceCode на http://www.gephex.org/download.php
Они уже создали такой виджет для QT, хотя могут быть немного старого кода (QT3) и специфичного для приложения.
Чао