QGraphicsItems在QgraphicsView外部呈现

时间:2017-08-31 11:41:40

标签: qt qgraphicsview qgraphicsscene

我创建了一个Qt Gui应用程序,除其他面板外,还包含QGraphicsView。现在我的问题是QGraphicsItems似乎在视觉之外被人为地渲染了,我还没有找到原因。

在此处查看示例图片

enter image description here

如果有帮助,我的所有QObjects / QWidgets堆叠如下:

  • MainWindow,继承QMainWindow
    • 了QSplitter
      • 了QSplitter
        • 了QSplitter
          • QTabWidget
            • QStackedWidget
              • MyEditor,继承了QGraphicsView
                • QGraphicsScene

但是如果没有分割器和tabwidget,还有一个更小的例子,问题仍然存在。在我寻找解决方案时,我发现在QGraphicsView中调用viewport()->update();可以解决QGraphicsScene中的类似渲染问题,但不能在外部解决。

我发现只有部分解决方案:我注意到当窗口被停用时(即当你点击/ Alt-Tab到另一个程序时)整个应用程序都会更新,QEvent::WindowDeactivate。这似乎触发了应用程序中所有小部件的级联update()。实际上,调用update()解决了面板之间空间的问题,而不是面板本身。我还没有找到一种方法来逐步更新面板。

所以我的问题是:

  • 这是一个错误还是我可怕地滥用QGraphicsScene
  • 这个问题有一般的解决方法吗?可能是什么原因?
  • 潜在的解决方案可能是扩展QWidget,以实现级联更新。但感觉就是没有解决问题的根源。

我使用Qt 5.8.0。此问题至少在Mac和Windows上仍然存在。

0 个答案:

没有答案