PyQt图形视图调整大小事件

3

我希望使用PyQt将图形视图的调整大小事件连接到一个函数上。我使用QtCreator将QGraphicsView添加到GUI中。我尝试了几种不成功的变化:

gv.pyqtConfigure(resize=self.printR)

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

gv.resize.connect(self.printR)              

然而,以上方法都没有起作用(我已经尝试了许多事件名称的变化)。

正确的做法是什么?

扩展问题,是否有一个明确的列表,列出Qt中不同部件可用的所有信号,即可以传递给SIGNAL()的所有可能值,或者小部件可用的“信号”属性(例如button.clicked.connect())?


如果您仍然对此感兴趣,请查看我在这里的答案(https://dev59.com/2Wox5IYBdhLWcg3wzXel#36630691)。您可以按照自己的意愿去做,但需要一些额外的Python技巧。 - Mad Physicist
1个回答

8

PyQt类参考是查找信号和类方法的最佳途径。

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

self.connect(senderObject, QtCore.SIGNAL("signalName()"), self.slotMethod)

据我所知,大多数小部件在调整大小时通常不会发出信号。要实现此功能,您需要重新实现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()"))

使用Qt Designer,您应该能够通过右键单击现有的QGraphicsView小部件并选择“提升为...”来将其转换为自定义小部件的占位符。如需帮助,请参阅此处
我希望这足以回答您的问题。

这在很大程度上回答了问题 - 看起来连接到调整大小事件的唯一方法是使用像您的示例所示的派生类。我也不知道“晋升为”选项,这很有用,谢谢 =) - aaa90210
您不需要对您连接的小部件进行子类化:https://dev59.com/2Wox5IYBdhLWcg3wzXel#36630691。 - Mad Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接