PyQt / PySide QSpinBox闪烁问题

时间:2012-10-04 22:02:16

标签: qt pyqt pyside qgraphicsview qspinbox

我使用QGraphicsProxyWidget将QSpinBox添加到QGraphicsScene。每当我将鼠标悬停在QSpinBox上时,它会在旋转框控件上覆盖黑色条带而闪烁。我附上了截图和下面的代码。难道我做错了什么?有办法避免这种情况吗? Pyside 1.1.2,Python 2.7,Windows7。

QSpinBox flickering on hover

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_()

修改

显然这里有一个错误报告:Bugreport。我不得不最后将QSpinBox添加到常规QWidget而不是QGraphicsView下。

1 个答案:

答案 0 :(得分:0)

为什么要将旋转箱放在QGraphicsScene中?这似乎很奇怪。如果您没有一些神秘的原因,但只想要一个功能性,非闪烁的UI元素,请尝试将testWidget设为QDialog而不是QGraphicsView

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_()