QEvent-Propagation mit accept()/ignore()
Verfasst: 16. Juli 2010 08:00
Hallo,
hab etwas Schwierigkeiten, das Konzept der Event-Propagation zu verstehen. Folgendes Szenario: Eigener Button, implementiert Event-Handler f. Mausklicks:
Laut Doku wird mit accept() das Event angenommen, propagiert also nicht weiter zum Parent (QPushButton), während ignore() dafür sorgt, dass das Event zum Parent geleitet wird. Reicht es dann, ignore() aufzurufen, und der explizite Aufruf des Event-Handlers f. PushButton (QPushButton::mousePressEvent(e)) kann entfallen, oder muss der Standard-Eventhandler f. QPushButton immer aufgerufen werden?
Danke für alle Hinweise
hab etwas Schwierigkeiten, das Konzept der Event-Propagation zu verstehen. Folgendes Szenario: Eigener Button, implementiert Event-Handler f. Mausklicks:
Code: Alles auswählen
class NoisyButton : public QPushButton
{
Q_OBJECT
public:
NoisyButton(QWidget* parent = 0);
virtual ~NoisyButton();
bool isFunctional() const {
return mFunctional;
}
protected:
virtual void mousePressEvent(QMouseEvent* e)
{
if (!isFunctional())
{
mPlayBack->playback("disabled.wav");
e->accept();
}
else
{
e->ignore();
QPushButton::mousePressEvent(e);
}
}
[...]
private:
bool mFunctional;
};
};
Danke für alle Hinweise