Qt:创建自己的Qgraphicscene/s的最佳过程
我正在制作分形创造者软件。因此,我需要一个场景,每个分形和这些场景需要“分层”,因为缩放橡皮筋 我已经尝试过用“widget”的方式编写它,所以我有一个自定义的widget叫做“canvas”。在canvas类中,我重写了paintEvent,并在该事件中渲染了当前分形。每当有人用另一个分形单击菜单时,我调用update()方法并渲染新的分形。为了缩放,我使用了鼠标事件的覆盖和画布的update()。第一次我重新画了整个画布,但是画得很慢。之后,我只重涂了橡皮筋下的部分,但当我想选择一些更大的区域和其他重涂问题时,速度仍然很慢 所以我一直在寻找另一种方法。层。我已经找到了QStackedWidget,但我没有找到方法使我的层和顶层都可见,使其透明。之后,我找到了QGraphicscene,这似乎是最好的方法。但我不知道做这件事的正确程序。以下是我正在考虑的两个程序:Qt:创建自己的Qgraphicscene/s的最佳过程,qt,qgraphicsview,qgraphicsitem,qgraphicsscene,Qt,Qgraphicsview,Qgraphicsitem,Qgraphicsscene,我正在制作分形创造者软件。因此,我需要一个场景,每个分形和这些场景需要“分层”,因为缩放橡皮筋 我已经尝试过用“widget”的方式编写它,所以我有一个自定义的widget叫做“canvas”。在canvas类中,我重写了paintEvent,并在该事件中渲染了当前分形。每当有人用另一个分形单击菜单时,我调用update()方法并渲染新的分形。为了缩放,我使用了鼠标事件的覆盖和画布的update()。第一次我重新画了整个画布,但是画得很慢。之后,我只重涂了橡皮筋下的部分,但当我想选择一些更大的区
我希望我的解释能有所帮助:-)。在Qt中,Qgraphicscene可以被看作是一个项目的世界,QGraphicsView是一个进入这个世界的窗口。因此,您应该基于QGraphicsItem(或者QGraphicsObject,如果您想要信号和插槽),向QGraphicscene添加项目 在您的情况下,我将创建一个从QGraphicsItem继承的分形类,并将其添加到场景中。确保覆盖必要的纯虚拟函数,如和 不要在paint函数中计算分形代码。我建议分形类存储一个QPixmap(如果在像素级绘制,则为QImage)并将分形渲染到这个级别。然后,在paint函数中,分形类通过调用or来呈现QPixmap的内容;在这种情况下,以相关者为准
至于缩放,您的分形类可以响应缩放,适当更改内部表示的渲染。好的,谢谢。那橡皮筋呢?它是否以“层”的方式工作?那么,当我打开橡皮筋时,它是否在另一层,然后是我的物品?我的意思是,当橡皮筋方格调整尺寸时,方格下方的项目是否重新喷漆?整个场景都重新粉刷过了吗?单词“缩放橡皮筋”并没有给我足够的信息来理解你在用橡皮筋做什么。你能详细说明一下你的问题吗?请注意,QGraphicsView支持橡皮筋选择,如果这有助于: