[PyKDE] Cannot connect QSplitter signal

Toru Furukawa toru at oldriver.org
Tue Jul 1 20:17:00 BST 2003


Thanks for many advices.

On Sat, 28 Jun 2003 15:09:34 +0100
Phil Thompson <phil at riverbankcomputing.co.uk> wrote:
> > Platform: WindowsXP / Python2.2.2 / Qt2.3 / PyQt-3.6
...
> > s = QSplitter()
...
> > app.connect(s, SIGNAL("childEvent(QChildEvent *e)"), PYSIGNAL("foo"))
...
> childEvent() isn't a signal. Even if it was you shouldn't include the argument 
> name (ie. "e") in the signature string. Also, a QChildEvent deals with the 
> addition and removal of children in a QObject hierarchy.
> 
> The solution is to sub-class QSplitter and re-implement 
> mouseDoubleClickEvent().

That is it.  The code below shows the way, I guess.

Now, I found MySplitter.event() is called when I resize, hide, maximize 
or minimize widget, but MySplitter.event() and 
MySplitter.mouseDoubleClicked() are not called.  I am trying to hide a 
child widget when double-clicking on a splitter (separator or whatever 
you call the long lectangular stuff between child widgets), as in 
Mozilla's side bar.

How can I detect mouse events on the splitter widget?

########
from qt import *
class MySplitter(QSplitter):
    def event(self, e):
        print "#", e
        return QSplitter.event(self, e)
    def mouseDoubleClickEvent(self, e):
        print "*", e
        QSplitter.mouseDoubleClickEvent(self, e)
app = QApplication([])
s = MySplitter()
app.setMainWidget(s)
QWidget(s)
QWidget(s)
s.show()
app.exec_loop()
########

Phil told me that the code works fine to him.  I wonder it is platform 
dependent.

-- 
Toru Furukawa <toru at oldriver.org>






More information about the PyQt mailing list