[PyQt] no mouseMoveEvent in QTextBrowser?

Phil Thompson phil at riverbankcomputing.com
Tue Jan 22 13:58:06 GMT 2008


On Monday 21 January 2008, martin.hammer at de.thalesgroup.com wrote:
> >On Monday 21 January 2008, [EMAIL PROTECTED] wrote:
> >> ...
> >>
> >> >You probably want QWidget.setMouseTracking().
> >> >
> >> >Phil
> >>
> >> Hm, mouseTracking is set in the textBrowser, the centralWidget and the
> >> QMainWindow. Um, shall I say, I'm running under Windows XP?
> >
> >You need to post a short, complete example that demonstrates the problem.
> >
> >Phil
>
> #Here is the designer ui (ui_untitled.py):
> #----------------------------------------
> # -*- coding: utf-8 -*-
>
> # Form implementation generated from reading ui file 'untitled.ui'
> #
> # Created: Mon Jan 21 14:38:34 2008
> #      by: PyQt4 UI code generator 4.3.3
> #
> # WARNING! All changes made in this file will be lost!
>
> from PyQt4 import QtCore, QtGui
>
> class Ui_MainWindow(object):
>     def setupUi(self, MainWindow):
>         MainWindow.setObjectName("MainWindow")
>
> MainWindow.resize(QtCore.QSize(QtCore.QRect(0,0,293,250).size()).expandedTo
>(MainWindow.minimumSizeHint())) MainWindow.setMouseTracking(True)
>
>         self.centralwidget = QtGui.QWidget(MainWindow)
>         self.centralwidget.setMouseTracking(True)
>         self.centralwidget.setObjectName("centralwidget")
>
>         self.textBrowser = QtGui.QTextBrowser(self.centralwidget)
>         self.textBrowser.setGeometry(QtCore.QRect(10,10,256,192))
>         self.textBrowser.setMouseTracking(True)
>         self.textBrowser.setObjectName("textBrowser")
>         MainWindow.setCentralWidget(self.centralwidget)
>
>         self.statusbar = QtGui.QStatusBar(MainWindow)
>         self.statusbar.setObjectName("statusbar")
>         MainWindow.setStatusBar(self.statusbar)
>
>         self.retranslateUi(MainWindow)
>         QtCore.QMetaObject.connectSlotsByName(MainWindow)
>
>     def retranslateUi(self, MainWindow):
>  MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow",
> "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
>
> # and here the main app
> #----------------------
> #!/usr/bin/env python
>
> import sys
> from PyQt4 import QtCore, QtGui
> from ui_untitled import Ui_MainWindow
>
> eventTypes = {
>   0: "None",
>   1: "Timer",
>   2: "MouseButtonPress",
>   3: "MouseButtonRelease",
>   4: "MouseButtonDblClick",
>   5: "MouseMove",
>   6: "KeyPress",
>   7: "KeyRelease",
>   8: "FocusIn",
>   9: "FocusOut",
>   10: "Enter",
>   11: "Leave",
>   12: "Paint",
>   13: "Move",
>   14: "Resize",
>   17: "Show",
>   18: "Hide",
>   19: "Close",
>   21: "ParentChange",
>   24: "WindowActivate",
>   25: "WindowDeactivate",
>   26: "ShowToParent",
>   27: "HideToParent",
>   31: "Wheel",
> # some deleted ...
>   178: "ContentsRectChange"
> }
>
>
>
> class MainWindowForm(QtGui.QMainWindow):
>   def __init__(self, parent=None):
>     QtGui.QMainWindow.__init__(self)
>
>     self.ui = Ui_MainWindow()
>     self.ui.setupUi(self)
>     self.ui.textBrowser.installEventFilter(self)
>   # end def __init__
>
>   def eventFilter(self, obj, ev):
>     if eventTypes.has_key(ev.type()):
>       et = eventTypes[ev.type()]
>     else:
>       et = "unknown"
>     # end if
>     print "%s: %s" % (obj, et)
>     return True
>   # end def eventFilter
>
>   def mouseMoveEvent(self, ev):
>     print "centralwidget mouse move"
>
> # end class MainWindowForm
>
> if __name__ == "__main__":
>   app = QtGui.QApplication(sys.argv)
>   win = MainWindowForm()
>   win.show()
>   sys.exit(app.exec_())
> # end if

Try setting the event filter on textBrowser.viewport().

Phil


More information about the PyQt mailing list