【问题标题】:subclassing qgraphicsview and qgraphicsscene子类化 qgraphicsview 和 qgraphicsscene
【发布时间】:2013-11-19 08:47:05
【问题描述】:

我有一个自定义 QGraphicsView 和一个自定义 QGraphicsScene 类。当我创建一个新的自定义视图时,我将自定义场景传递给调用 setScene() 的构造函数。但是后来当我在我的场景类上调用views() 并将它作为QList 返回时我遇到了问题我认为我需要覆盖views() 函数但我不完全确定我会在其中做些什么不同.

我实际上还有两个自定义场景类,但我使用相同的视图。我在制作两个不同的构造函数时遇到了麻烦:

my_view(my_scene1 * scene, QWidget *parent =NULL);
my_view(my_scene2 * scene, QWidget *parent =NULL);

它会导致我的其他文件中出现许多“不完整类型”错误,这些文件通常可以正常工作。

【问题讨论】:

    标签: qt qt4 qgraphicsview qgraphicsscene


    【解决方案1】:

    听起来您错过了 QGraphicsView 和 QGraphicsScene 的重点。将 QGraphicsScene 视为一个世界,其中包含对象。 QGraphicsView 就像一个窗口,或者是一个观察世界的相机(QGraphicsScene)。

    考虑到这一点,让多个视图查看单个场景是有意义的,但您不会将多个场景链接到单个视图。

    当您在 QGraphicsScene 上调用 views() 时,它会返回一个列表,因为它是所有正在查看场景区域的 QGrahicsViews 的列表。

    【讨论】:

    • 第二个场景的原因是因为当我点击原始场景中的图形时,它是一个弹出式窗口。在我接手之前,它只是这样编程的。我想为两个视图(主视图和弹出框视图)添加一些新的缩放热键和功能。最初在这两种情况下都使用了默认的 QGraphicsView 类,但是我为弹出窗口编写了一个子类视图,并且能够使我的缩放功能正常工作,但是当我尝试将我的自定义视图用于主场景时,我得到了编译错误。是的,这是一个措辞不当的问题,所以我可能会删除或更改它。
    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2011-06-26
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多