PyQt/PySide QSpinBox闪烁问题

PyQt/PySide QSpinBox闪烁问题,qt,pyqt,pyside,qgraphicsview,qspinbox,Qt,Pyqt,Pyside,Qgraphicsview,Qspinbox,我使用QGraphicsProxy小部件向QGraphicscene添加了一个QSpinBox。每次我将鼠标悬停在QSpinBox上,它都会闪烁,并在spinbox控件上覆盖一条黑带。我附上了一个截图和下面的代码。我做错什么了吗?有没有办法避免这种情况?PySide1.1.2、Python2.7、Windows7 class testWidget(QGraphicsView): def __init__(self): QGraphicsView.__init__(self

我使用QGraphicsProxy小部件向QGraphicscene添加了一个QSpinBox。每次我将鼠标悬停在QSpinBox上,它都会闪烁,并在spinbox控件上覆盖一条黑带。我附上了一个截图和下面的代码。我做错什么了吗?有没有办法避免这种情况?PySide1.1.2、Python2.7、Windows7

class testWidget(QGraphicsView):
    def __init__(self):
        QGraphicsView.__init__(self)

        floorSpinBox = QSpinBox()
        floorSpinBox.setGeometry(0,0,50,25)

        proxyWidget = QGraphicsProxyWidget() 
        proxyWidget.setWidget(floorSpinBox)

        scene = QGraphicsScene(self)
        scene.addItem(proxyWidget)
        self.setScene(scene)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = testWidget()
    widget.show()
    app.exec_()
编辑
显然这里有一个bug报告:。我最终不得不将QSpinBox添加到常规的QWidget中,而不是QGraphicsView下。

为什么要将spinbox放在qgraphicscene中?这似乎很奇怪。如果您没有什么神秘的原因,只是想要一个功能性的、非flash的UI元素,那么可以尝试将testWidget设置为QDialog而不是QGraphicsView


这是我在窗口中显示大量图形元素的大型应用程序的一部分。我需要一些与QSpinBox的用户交互来控制这些元素的显示。我将QMainWindow中的中心小部件设置为QTabWidget,并且每个选项卡都设置为QGraphicsView,现在我正在尝试将其他元素添加到其中一个选项卡上。@JohnSmith:如果在普通小部件中使用它,问题会消失吗?Qt开发者甚至建议,如果你能帮忙的话,就不要使用QGraphics中的代理小部件。@jdi:恐怕不行,闪烁仍然存在。不过,这里的另一篇文章建议,proxywidgets可能是一个不错的选择,所以我认为这是一个合适的方法@jSmith:我相信人们会推荐它们,因为它们确实是框架的一部分,但当我观看开发人员关于QGraphicscene的演示时,他们谈论了它们是如何纯粹为了方便而添加的。它们的绘制速度较慢,需要额外的工作,他说要尽量避免使用它们,只是作为最后的手段。@jSmith:在切换到一个普通的小部件后,闪烁确实消失了,也就是在PyQt4.7中。我会在QTabWidget中放置一个布局,包含QGraphicsView和QSpinBox,这样spinbox就不必位于graphicsview中。我可以确认,OSX中的PySide或PyQt都不会出现这种情况
from PyQt4.QtGui import QDialog, QSpinBox,QApplication
import sys

class testWidget(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        self.setGeometry(200,200,200,100)

        floorSpinBox = QSpinBox(self)
        floorSpinBox.setGeometry(75,40,50,25)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = testWidget()
    widget.show()
    app.exec_()