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);
}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ