0

我正在开发一个小部件,当它与另一个小部件匹配移动或调整大小时,它需要自我更新。目前,我有另一个小部件自己做resizeEvent()moveEvent()并且在里面它发出一个我的小部件连接到的信号。

但是,我不喜欢这种设置。稍后再说我想让我的另一个小部件用它的resizeEvent().

有没有办法在小部件B或被触发时通知小部件A (来自小部件A ) ?resizeEvent()moveEvent()

4

1 回答 1

2

您可以创建一个负责监控的 Helper 类,因此您不需要覆盖这些类。

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class Helper(QObject):
    def setWidgets(self, emmiter, receiver):
        emmiter.installEventFilter(self)
        self.emmiter = emmiter
        self.receiver = receiver

    def eventFilter(self, obj, event):
        if obj == self.emmiter:
            if event.type() == QEvent.Resize: 
                self.receiver.resize(self.emmiter.size())
            elif event.type() == QEvent.Move:
                self.receiver.move(event.pos())
        return QObject.eventFilter(self, obj, event)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    helper = Helper()
    w1 = QWidget()
    w1.setWindowTitle("emmiter")
    w2 = QWidget()
    helper.setWidgets(w1, w2)
    w1.show()
    w2.show()
    sys.exit(app.exec_())
于 2018-04-19T02:40:03.383 回答