Qt_GUI_IM_2_6 - 8BitsCoding/RobotMentor GitHub Wiki
child๊ฐ ์ ์ผ ๋จผ์ ํธ์ถ๋๊ณ ๊ทธ ์ดํ parent event ์์ผ๋ก ํธ์ถ ๋จ.
// main widget
#include "widget.h"
#include "ui_widget.h"
#include "childbutton.h"
#include "childlineedit.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ChildButton * button = new ChildButton(this);
button->setText("Child Button");
connect(button,&ChildButton::clicked,[=](){
qDebug() << "Button clicked";
});
ChildLineEdit * lineEdit = new ChildLineEdit(this);
ui->verticalLayout->addWidget(button);
ui->verticalLayout->addWidget(lineEdit);
}
Widget::~Widget()
{
delete ui;
}// ChildButton.cpp
#include "childbutton.h"
#include <QDebug>
ChildButton::ChildButton(QWidget *parent) : ParentButton(parent)
{
}
void ChildButton::mousePressEvent(QMouseEvent *event)
{
qDebug() << "ChildButton mousePressEvent called";
ParentButton::mousePressEvent(event);
}// ParentButton.cpp
#include "parentbutton.h"
#include <QDebug>
ParentButton::ParentButton(QWidget *parent) : QPushButton(parent)
{
}
void ParentButton::mousePressEvent(QMouseEvent *event)
{
qDebug() << "ParentButton mousePressEvent Called";
QPushButton::mousePressEvent(event);
}
ParentLineEdit::keyPressEvent(event);๊ฐ ์๋ค๋ฉด parent๋ก ํ๋ฌ๊ฐ์ง ์๋๋ค.
// ChildLineEdit.cpp
#include "childlineedit.h"
#include <QDebug>
#include <QKeyEvent>
ChildLineEdit::ChildLineEdit(QWidget *parent) : ParentLineEdit(parent)
{
}
void ChildLineEdit::keyPressEvent(QKeyEvent *event)
{
// qDebug() << "ChildLineEdit keyPressEvent";
// ParentLineEdit::keyPressEvent(event);
qDebug() <<" ChildLineEdit Accepted : " << event->isAccepted();
event->ignore();
// " ParentLineEdit Accepted : false "๊ฐ ๋๋ค.
if(event->key() == Qt::Key_Delete){
qDebug() << "Pressed the Delete Key";
clear();
}else{
ParentLineEdit::keyPressEvent(event);
}
}// ParentLineEdit.cpp
#include "parentlineedit.h"
#include <QDebug>
#include <QKeyEvent>
ParentLineEdit::ParentLineEdit(QWidget *parent) : QLineEdit(parent)
{
}
void ParentLineEdit::keyPressEvent(QKeyEvent *event)
{
qDebug() << "ParentLineEdit keyPressEvent";
qDebug() <<" ParentLineEdit Accepted : " << event->isAccepted();
QLineEdit::keyPressEvent(event);
}