qml -> cpp 함수 호출 (signal&slot)
mission
qml에 있는 회색 버튼을 누르면 cpp 함수가 실행되는 것 !!!!!!!!!!!!!!! wow
main.cpp
menu 헤더파일을 include하고 menu app 실행
# main.cpp : 그냥 메인.. 시작하는 코드 !
#include "menu.h"
int main(int argc, char *argv[])
{
menu app(argc, argv);
return app.exec();
}
main.qml
signal 함수 정의 하고 버튼 클릭 시 함수를 호출 !
import QtQuick 2.6
import QtQuick.Window 2.2
Item{
property int num: 1
signal qmlsignal(int getnum)
// signal에 대한 함수 정의
width: 200
height: 200
Rectangle {
width: 100
height: 100
color: "gray"
MouseArea{
anchors.fill: parent
onClicked:{
qmlsignal(num)
// 내부 영역 클릭 시 qmlsignal(num) 호출
}
}
}
}
view.h
위에서 signal함수를 정의했으니, 여기선 그 signal이 동작했을 때 호출될 slot 함수를 정의내림. 구체적인 내용은 view.cpp에서
!
#include <QQuickView>
#include <QObject>
class view :public QQuickView
{
Q_OBJECT
public:
view();
public slots :
void qmlslot(int);
};
view.cpp
slot 함수에 대한 구체적인 내용 기술되어있음.
#include <QDebug>
#include "view.h"
view::view()
{
}
void view::qmlslot(int getnum)
{
qDebug() << "call qmlslot func!!!!!!!!!!!";
}
menu.h
menu.cpp에서 사용하는 함수들 정의
#include <QGuiApplication>
#include <QQuickItem>
#include "view.h"
class menu : public QGuiApplication
{
public:
menu(int &, char **);
void init();
void showqml();
view *m_pQuickView;
};
menu.cpp
slot 함수 가지는 view 객체를 하나 만들고 signal과 slot 을 연결시켜주는 부분
연결 시켜 준다는게, signal 함수랑 slot 함수 따로따로 만들었으니까
이 시그널이 --> 이 슬롯으로 연결된다는 걸 적어줘야함 ~~~!!!!
#include "menu.h"
menu::menu(int &argc, char *argv[]) : QGuiApplication(argc, argv)
{
init();
showqml();
}
void menu::init()
{
m_pQuickView = new view();
m_pQuickView->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
QObject *item = m_pQuickView->rootObject();
// cpp내에서 main.qml에 접근하기 위함임
QObject::connect(item, SIGNAL(qmlsignal(int)), m_pQuickView, SLOT(qmlslot(int)));
// main.qml에서 qmlsignal(int) signal이 발생될 때
// m_pQuickView 객체의 slot 함수인 qmlslot(int)이 호출되도록
}
void menu::showqml()
{
m_pQuickView->show();
}
결과
- 버튼을 누르면 debug 로그가 찍힘 !
Author And Source
이 문제에 관하여(qml -> cpp 함수 호출 (signal&slot)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@minjung0067/qml
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여(qml -> cpp 함수 호출 (signal&slot)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minjung0067/qml저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)