1

我即将开始为模块化合成应用程序(如 Alsa Modular Synth、Pure Data、Ingen)编写一个 GUI,该应用程序将用于补丁(声音)编辑。

我需要做的是这样的:

英根
(来源:drobilla.net

纯数据

霍尔西姆克1?
(来源:mcgill.ca

所以,基本上,这是一个我可以绘制一些矩形(框)的区域,这些矩形(框)代表带有输入和输出端口的合成器模块,我可以用电线连接它们。

问题是我无法弄清楚两个如何为编辑区域创建一个小部件:使用简单的 2D 绘图上下文手动绘制框似乎是这样做的唯一合乎逻辑的方法,但这样做我失去了所有qt 给我的很棒的事件管理。

我想知道是否有可能创建一个自定义布局,它只需要创建“框”的坐标并将它们放在屏幕上,以便我将框实现为 QWidget 的子类(并重用 qt 的事件处理系统),然后我添加他们像往常一样走到窗前。

或者也许有更好的方法?

谢谢

4

3 回答 3

2

看看 QGraphicsScene 和 QGraphicsView。这样,您将能够创建一个充满物品的场景。每个项目都可以接收鼠标事件,您可以手动绘制它。

于 2009-09-28T14:29:40.270 回答
1

您可以创建一个继承自 QLayout 的自定义布局类,并使用坐标重载 add(QWidget* w) 函数。

我个人使用的是 QGraphicsView 和 QGraphicsScene。您可以处理一些事件(如鼠标事件)并轻松找到您的 QGraphicsItem。

于 2009-09-28T14:33:53.383 回答
0

在http://www.gephex.org/download.php上查看 Gephex 源代码

他们已经为 Qt 构建了这样的小部件,尽管可能有点旧代码 (QT3) 和特定于应用程序。

再见

于 2010-06-22T15:00:30.547 回答