Вопрос

Я собираюсь начать писать графический интерфейс для приложения модульного синтеза (например, модульный синтезатор ALSA, чистые данные, Ingen), которое будет использоваться для редактирования патча (звука).

Что мне нужно сделать, так это что -то вроде этого:

Ingen
(источник: Drobilla.net)

Pure Data

hallseymrk1?
(источник: 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) и специфичного для приложения.

Чао

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top