PyQt4:QPixMap 信号?

问题描述 投票:0回答:1

在哪里可以找到 QPixMap 发出的信号列表及其描述?我查看了官方文档,还用谷歌搜索了“pyqt4 qpixmap 信号”,但我找不到任何东西。

我需要这个,因为我需要更改鼠标悬停在 QPixMap 上时显示的图像。我希望简单地将一个函数连接到“悬停”或“鼠标悬停”信号,但我找不到这样的东西。

一个更普遍的问题:将来,如果我想找到某个类发出的信号列表,我在哪里可以找到这些信息?谢谢。

python qt pyqt4
1个回答
1
投票

QPixmap 类没有定义任何信号。只有QObject的子类可以定义信号,而QPixmap不是QObject的子类。

要跟踪鼠标移动,您必须监视相关系统事件,这些事件被发送到用于显示像素图的小部件。一种方法是在显示小部件上安装 event-filter,并处理其 enterleave 事件。

这是一个简单的演示,展示了如何做到这一点:

from PyQt4 import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.pixmap1 = QtGui.QPixmap('image1.jpg')
        self.pixmap2 = QtGui.QPixmap('image2.jpg')
        self.label = QtGui.QLabel(self)
        self.label.setPixmap(self.pixmap1)
        self.label.installEventFilter(self)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.label)

    def eventFilter(self, widget, event):
        if widget is self.label:
            if event.type() == QtCore.QEvent.Enter:
                self.label.setPixmap(self.pixmap2)
            elif event.type() == QtCore.QEvent.Leave:
                self.label.setPixmap(self.pixmap1)
        return super(Window, self).eventFilter(widget, event)  

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.setGeometry(500, 300, 200, 200)
    window.show()
    sys.exit(app.exec_())
© www.soinside.com 2019 - 2024. All rights reserved.