PyQt graphicsview调整大小事件

aaa*_*210 3 events qt signals pyqt

我想使用PyQt将图形视图上的resize事件连接到函数.我使用QtCreator将QGraphicsView添加到GUI.我尝试了一些变化没有成功:

gv.pyqtConfigure(resize=self.printR)

QtCore.QObject.connect(gv,QtCore.SIGNAL("resized()"),self.printR)          

gv.resize.connect(self.printR)              
Run Code Online (Sandbox Code Playgroud)

但是没有上述工作(我尝试使用事件名称的许多变体).

这样做的正确方法是什么?

作为一个扩展的问题,Qt中不同小部件可用的所有信号的任何位置都有一个确定的列表,即可以传递给SIGNAL()的所有可能值,或小部件可用的"信号"属性(例如按钮). clicked.connect())?

小智 8

PyQt的类引用是寻找信号和类方法的最佳场所.

连接简单信号可以这样做:

self.connect(senderObject, QtCore.SIGNAL("signalName()"), self.slotMethod)
Run Code Online (Sandbox Code Playgroud)

然而,据我所知,大多数小部件在调整大小时通常不会发出信号.为了做到这一点,你需要重新实现QGraphicsView类及其resizeEvent方法,修改它以发出这样的信号,如下所示:

from PyQt4.QtGui import QGraphicsView
from PyQt4.QtCore import SIGNAL

class customGraphicsView(QGraphicsView):

    def __init__(self, parent=None):
        QGraphicsView.__init__(self, parent)

    def resizeEvent(self, evt=None):
        self.emit(SIGNAL("resize()"))
Run Code Online (Sandbox Code Playgroud)

使用Qt Designer,您应该能够将现有的QGraphicsView小部件转换为这种自定义小部件的占位符,方法是右键单击它并选择" 提升为...".如需帮助,请查看此处.

我希望这足以回答你的问题.