상세 컨텐츠

본문 제목

[C++ QT QML] Signal slot 활용하여 Button 클릭 시 이벤트 처리

QT|QML

by donggyu1998 2021. 6. 14. 14:13

본문

반응형

이 예제는 signal slot을 활용하여 QML에서 button 클릭 시 qDebug로 msg문구를 출력하는 예제입니다.

💡 버튼 클릭 시 처리되는 실행 화면

 

💡 QML에 버튼 추가

    signal qmlSignal(string msg)

    Button {
        id: add
        anchors.horizontalCenter: parent.horizontalCenter
        text: qsTr("add")
        onClicked: qmlSignal(text)
    }

코드 : https://pastebin.com/HXug1VQ0

💡 Main.cpp

// main cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "myclass.h"

int main(int argc, char *argv[])
{
     QGuiApplication app(argc, argv);

     QQmlApplicationEngine engine;
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
     QObject *item = engine.rootObjects().first();

     MyClass myClass;
     QObject::connect(item, SIGNAL(qmlSignal(QString)),
                      &myClass, SLOT(cppSlot(QString)));

     return app.exec();
}

코드 : https://pastebin.com/wcQJ1GeK

💡 myclass.h

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QObject>
#include <QDebug>

class MyClass : public QObject
{
    Q_OBJECT
public slots:
    void cppSlot(const QString &msg) {
        qDebug() << "Called the C++ slot with message:" << msg;
    }
};

#endif // MYCLASS_H

코드 : https://pastebin.com/b9nndCYt

💡 myclass.cpp

#include "myclass.h"

MyClass::MyClass(QObject *parent) : QObject(parent)
{

}

💡 qrc

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
    </qresource>
</RCC>

코드 : https://pastebin.com/iCuM9YdD

 

💡 pro

TEMPLATE = app

QT += qml quick
CONFIG += c++11

SOURCES += main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

HEADERS += \
    myclass.h

코드 : https://pastebin.com/J1BAWx1z

반응형

관련글 더보기