2014-03-07 71 views
0

我有兴趣为Qt中的学习目的制作我自己的小gui设计师。只需从左侧面板拖放控件,然后拖动到右侧面板上,可以选择,移动,调整大小并更改其属性(名称等),并最终(如果选择)进行排列。gui设计师的实现

我会使用QGraphicsScene作为右面板,因为它已经选择和移动实施。但是,我将如何实施调整大小?然后,我将如何生成一个QWidget类的控件在相同的位置?还是有更简单的方法?

什么是最好的方式来实现所有这一切?欢迎提出所有建议,并记住它不会像Qt设计师那样复杂。

+0

这是一个非常不平凡的应用程序“在Qt学习目的”。 – cmannett85

+0

这不是我第一次使用Qt或C++,它的意思就像在“完善”我在Qt中的知识并特别学习这个,因此 - 学习目的。 – rndm

回答

0

您需要定义一些小部件,这些小部件将从左侧面板拖动 - 可以是带有图标的树形视图 - 然后放到场景中。

这些小部件应该继承QGraphicsWidget。您也可以继承QWidget并通过QGraphicsProxyWidget将小部件放入场景中。可以通过突出显示角点和重载鼠标事件来调整它们的大小。请查看corner grabberssizable box示例。也检查出QSizeGrip。这是任何QStatusBar的调整手柄。

属性面板是最简单的,你应该列出点击项目的属性。为了排队,您可以重新发明轮子并编写布局制造商类,或者直接使用QGraphicsLayout并突出显示界面上的布局。 Ctrl +左键单击应选择多个小部件,布局按钮应以编程方式布置它们,并绘制边框矩形项目。

+0

我已经制作了一个控件图标,可以拖放到'QGraphicsScene'中。这些控件继承'QGraphicsPixmapItem',随后它们的位置和大小将决定另一个'QWidget'上的真实控件位置和大小。我在这里唯一的问题是使这些控件可调整大小。如果我现在切换到自定义'QGraphicsWidget',我怎样才能让他们画正规控件('QPushButtons'等)? – rndm

+0

你看过QGraphicsProxyWidget的用法吗? – baci

+0

是的,我做过了,但这些小部件在'QGraphicsScene'上不可移动和可选,他们响应像正常小部件那样的鼠标事件。 – rndm