jpa*_*cek 8 c++ user-interface qt qt4 qgraphicsview
我正在Qt4中创建一些显示小部件的图形数据,我很想使用QGraphicsScene它,QGraphicsItem为数据项创建s等.
但是,我想添加一些控件层(例如滚动条,缩放+其他按钮 - 我想以类似于Google地图的方式制作它,也就是说,数据会在整个小部件上显示,并且按钮将显示在小部件的顶部.因此我认为将它们添加到场景中可能是可行的(可能作为QGraphicsGroupItem将在数据上显示的子项).但是当我调整整个小部件时,我希望它们移动和调整大小,所以我应该用它QGraphicsLayout来管理它们.但在这一点上,我发现事情非常复杂.
问题是在使用时QGraphicsLayout,以下约束条件成立:
QGraphicsWidget可以通过布局进行管理QGraphicsLayout 只能用于管理孩子 QGraphicsWidget这意味着我必须创建我的控件作为QGraphicsWidgets,QGraphicsWidget为数据小部件添加顶级,并自己管理这个顶级小部件的大小.
所以我想问:
经典方法(即,对所有控件使用普通旧窗口小部件,QGraphicsScene仅用于显示数据)是否更合理?
QGraphicsScene在这种情况下使用是否有任何优势(性能或简单性......)?
我应该如何QGraphicsScene利用它的优势?
从Qt 4.4开始,您可以QGraphicsScene使用QGraphicsProxyWidget以下方法嵌入经典小部件:
QWidget *widget = new QWidget;
QGraphicsScene scene;
QGraphicsProxyWidget *proxy = scene.addWidget(widget);
Run Code Online (Sandbox Code Playgroud)
如果您认为该QGraphicsScene(或您拥有的任何其他小部件)适合您的大部分显示,请使用它。我们过去对类似的事情所做的就是制作一个继承(以某种方式)的自定义小部件QWidget,并将控制小部件放在该小部件顶部的布局中。这意味着整个小部件正在绘制您想要绘制的任何内容,并且控制小部件位于其之上,随着整个小部件的大小调整而调整大小。
或者,有几次我们的布局有点太复杂,布局小部件无法轻松处理。我们没有创建自定义布局,而是只是在没有布局的情况下定位它们,并在调整大小事件的代码中移动它们。它也同样有效。