Qt - event handling in Qt

A .Qt event processing

Message processing model A. GUI application
Qt - event handling in Qt
messages generated by the system platform B.Qt convert Qt event
1.Qt event is an object QEvent
2.Qt describe an event for the program operation occurs inside or outside
3. arbitrary QObject objects have the ability to handle an event of
Qt - event handling in Qt
event handling C.GUI application
after 1.Qt event occurs immediately was assigned to QWidget objects
2.QWidget of event (QEvent ) event processing
3.event () call based on the type of event different event handlers
4. Qt signal transmission in a predefined event handler
5. the function call signal associated groove
scene analysis
Qt - event handling in Qt
QPushButton event processing and analysis
1. received mouse events
2. call event (QEvent
) member function
3. call mouseReleaseEvent (QMouseEvent *) member function
4. invoke click () member function
5. trigger SIGNAL (() clicked)
code sample - custom event

QMyPushButton.cpp
#include "QMyPushButton.h"
#include <QMouseEvent>

QMyPushButton::QMyPushButton(QWidget* parent, QButtonListener* listener) : QPushButton(parent)
{
    m_listener = listener;
}

void QMyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if( m_listener != NULL )
    {
        m_listener(this, e);

        e->accept();

        setDown(false);
    }
    else
    {
        QPushButton::mouseReleaseEvent(e);
    }
}

QMyPushButton.h
#ifndef QMYPUSHBUTTON_H
#define QMYPUSHBUTTON_H

#include <QPushButton>

typedef void (QButtonListener)(QObject*, QMouseEvent*);

class QMyPushButton : public QPushButton
{
    Q_OBJECT
protected:
    QButtonListener* m_listener;

    void mouseReleaseEvent(QMouseEvent *e);
public:
    explicit QMyPushButton(QWidget* parent = 0, QButtonListener* listener = 0);

signals:

public slots:

};
#endif // QMYPUSHBUTTON_H

Widget.cpp
#ifndef QMYPUSHBUTTON_H
#define QMYPUSHBUTTON_H

#include <QPushButton>

typedef void (QButtonListener)(QObject*, QMouseEvent*);

class QMyPushButton : public QPushButton
{
    Q_OBJECT
protected:
    QButtonListener* m_listener;

    void mouseReleaseEvent(QMouseEvent *e);
public:
    explicit QMyPushButton(QWidget* parent = 0, QButtonListener* listener = 0);

signals:

public slots:

};
#endif // QMYPUSHBUTTON_H

Widget.h
#ifndef QMYPUSHBUTTON_H
#define QMYPUSHBUTTON_H

#include <QPushButton>

typedef void (QButtonListener)(QObject*, QMouseEvent*);

class QMyPushButton : public QPushButton
{
    Q_OBJECT
protected:
    QButtonListener* m_listener;

    void mouseReleaseEvent(QMouseEvent *e);
public:
    explicit QMyPushButton(QWidget* parent = 0, QButtonListener* listener = 0);

signals:

public slots:

};
#endif // QMYPUSHBUTTON_H

Operating results and a print result when the button is released as shown in FIG
Qt - event handling in Qt
different events and signal D.
1. The events processed by the particular subject
2. object-specific signal is generated by the active
3. The event handler may cause the rewriting program behavior change
4. whether there is a signal corresponding to program behavior does not change the function of the groove
5. in general, signals generated in a particular event handler
transfer process E. event
Qt - event handling in Qt
key member function in QEvent
1.void ignore () - ignored by the receiver current event, the event may be transmitted to the parent component
2.void accept () - handling the current event recipient desired
3.bool isAccepted () - determines whether the current event being processed
code generation operation result shown in FIG.
Qt - event handling in Qt
F.Qt in event filter
1. the event filter can receive other components monitor events
QObject objects 2 can be used as any event filter
3. the event filter object needs to be rewritten eventFilter () function
component through installEventFilter () on installation event filter
1. an event is received event filter before assembly
2. the event filter to decide whether to forward the event to the component object
Qt - event handling in Qt
basic - code
Qt - event handling in Qt
summary
of different events and signals 1.Qt
2. event is handled by the target QObject
3. QObject signal is triggered by an object
4. The event handler may override the behavior of the program becomes
5. The trigger signal does not affect program behavior
6. Application event handling is really practical engineering development is very common

Guess you like

Origin blog.51cto.com/13475106/2429631