我即将开始为模块化综合应用程序(如Alsa Modular Synth,Pure Data,Ingen)编写GUI,用于补丁(声音)编辑。
我需要做的是这样的事情:
(来源:drobilla.net)
(来源:mcgill.ca)
所以,基本上,这是一个我可以绘制一些矩形(盒子)的区域,这些矩形表示具有输入和输出端口的合成器模块,我可以用电线连接它们。
问题是我无法弄清楚两个如何为编辑区域创建一个小部件:使用一个简单的2D绘图上下文,我手动绘制框似乎是唯一合理的方法来做到这一点,但这样做我放松了所有的qt给我的伟大的事件管理。
我想知道是否有可能创建一个自定义布局,只需要创建“盒子”的坐标并将它们放在屏幕上,这样我就可以将这些框实现为QWidget的子类(并重用qt的事件处理系统)并添加他们像往常一样走到窗前。
或者也许有更好的方法?
谢谢
看看QGraphicsScene和QGraphicsView。这样您就可以创建一个充满项目的场景。每个项目都可以接收鼠标事件,您可以手动绘制它。
您可以创建一个继承自QLayout的自定义布局类,并使用坐标重载add(QWidget * w)函数。
我个人正在使用QGraphicsView和QGraphicsScene。您可以处理一些事件(作为鼠标事件)并轻松找到您的QGraphicsItem。
看看qazxsw poi上的Gephex源代码
他们已经为Qt构建了这样的小部件,尽管可能有点旧代码(QT3)和特定于应用程序。
你好