[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