Qt_GUI_IM_2_5 - 8BitsCoding/RobotMentor GitHub Wiki
bool QCoreApplication::notify(QObject* recevier, QEvent* event
- Can override this method in a QApplication subclass and hijack events
- This function is called for all events sent to any object in any thread.
- Errors you make in this method can seriously harm the rest of your application.
์ ๋ฆฌํ์๋ฉด ์ธ ๊ตฐ๋ฐ์์ Event๋ฅผ Handling ํ ์ ์๋ค.
-
QApplication::notify()
: ์ํ -
QObject::event()
: event Filter - ๊ฐ Object์ evnet์ฒ๋ฆฌ
class MyLineEdit : public QLineEdit
{
Q_OBJECT
public:
explicit MyLineEdit(QWidget* parent = nullptr);
protected:
void keyPressEvent(QKeyEvent* event) override;
void keyReleaseEvent(QKeyEvent* event) override;
}
- For event propagation to work, you have to call the parent implementation in your subclass override.
- Filters are useful when one object wants to listen in on events from another object!
bool QObject::eventFilter(QObject* watched, QEvent* event)
class KeyboardFilter : public QObject
{
Q_OBJECT
public:
explicit KeyboardFilter(QObject* parent= nullptr, QString msg = "");
protected:
bool eventFilter(QObject* dest, QEvent* event);
};
bool KeyboardFilter::eventFilter(QObject* dest, QEvent* event)
{
if(event->type() == QEvent::KeyPress)
{
qDebug() << "Event filter for " << message << " triggered";
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(evnet);
static QString digits = QString("12345");
if(digits.indexOf(keyEvent->text()) != -1)
return true;
}
return QObject::eventFilter(dest, event);
}