PyQT4 WheelEvent?如何检测车轮是否已被使用?

时间:2012-02-28 02:54:05

标签: python scroll height pyqt4 mousewheel

我试图在PyQT中找到我如何设置Mousewheel事件? 我需要它,所以我可以将它附加到Qscroll区域

使用的代码工作正常。但大小是硬编码的。我需要以某种方式动态调整,具体取决于轮子(在鼠标上)的使用方式..就像我向上滑动鼠标滚轮一样。我的框架的高度延伸(每个刻度50像素),反之亦然。

    self.scrollArea = QtGui.QScrollArea()
    #set the parent of scrollArea on the frame object of the computers
    self.scrollArea.setWidget(self.ui.Main_Body)
    self.scrollArea.setWidgetResizable(True)

    #add the verticalLayout a object on PYQT Designer (vlayout is the name)
    #drag the frame object of the computers inside the verticalLayout
    #adjust the size of the verticalLayout inside the size of the  frame

    #add the scrollArea sa verticalLayout
    self.ui.verticalLayout.addWidget(self.scrollArea)
    self.ui.Main_Body.setMinimumSize(400, 14000)

最后一部分是我想要提升的。我不希望它被硬编码为14000值。 感谢任何愿意提供帮助的人。我希望给定的示例代码也可以帮助其他有需要的人。

1 个答案:

答案 0 :(得分:2)

我可能会对您的问题感到有些困惑,但这里有一个关于如何访问调整窗口大小的滚轮事件的示例。如果您使用的是QScrollArea,我不知道您为什么要这样做。

from PyQt4.QtGui import *
from PyQt4.QtCore import *

import sys


class Main(QWidget):
    def __init__(self, parent=None):
        super(Main, self).__init__(parent)

        layout = QHBoxLayout(self)
        layout.addWidget(Scroll(self))


class Scroll(QScrollArea):

    def __init__(self, parent=None):
        super(Scroll, self).__init__(parent)
        self.parent = parent

    def wheelEvent(self, event):
        super(Scroll, self).wheelEvent(event)
        print "wheelEvent", event.delta()

        newHeight = self.parent.geometry().height() - event.delta()
        width     = self.parent.geometry().width()
        self.parent.resize(width, newHeight)

app = QApplication(sys.argv)
main = Main()
main.show()
sys.exit(app.exec_())

如果查看QScrollArea的文档,您将看到QWidget类继承的行,其中包含一个名为wheelEvent的函数。您可以将其放入并覆盖继承的函数。