QtQuick 응용 프로그램을 사용하여 일부 단추, 텍스트 영역으로 기본 UI를 디자인했습니다. 버튼 클릭과 같은 이벤트를 위해 C++에서 이벤트 처리기를 작성해야합니다. C++ 파일에서 qml 요소에 어떻게 액세스합니까?[해결] Qtquick C++ 클래스에서 응용 프로그램 이벤트 처리
0
A
답변
1
C++에서 QML 요소에 액세스하는 것은 좋지 않습니다. 간단한 예제를 통해 좀 더 선호 된 접근법을 보여 드리겠습니다.
- 가있는 QObject를 상속하는 C++ 클래스를 작성 (예)
[controller.h]
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QObject>
class Controller : public QObject
{
Q_OBJECT
public:
explicit Controller(QObject *parent = 0);
Q_INVOKABLE void onItemClicked();
};
#endif // CONTROLLER_H
(당신이 이벤트가 발생할 때 호출 할 것입니다 방법을 구현하는 것이 클래스)
[controller.cpp]
#include "controller.h"
#include <QDebug>
Controller::Controller(QObject *parent) : QObject(parent)
{
}
void Controller::onItemClicked()
{
qDebug() << "The item was clicked";
}
- 해당 클래스의 인스턴스를 만들고 QML UI를 실행하는 QQmlEngine의 컨텍스트 속성으로 설정합니다. Qt 빠른 응용 프로그램의 전형적인 "main.cpp"다음.
[MAIN.CPP]
#include <QtGui/QGuiApplication>
#include <QQmlEngine>
#include <QQmlContext>
#include "qtquick2applicationviewer.h"
#include "controller.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QtQuick2ApplicationViewer viewer;
Controller c;
viewer.engine()->rootContext()->setContextProperty("Controller", &c);
viewer.setMainQmlFile(QStringLiteral("qml/quicktest/main.qml"));
viewer.showExpanded();
return app.exec();
}
- 이제 자유롭게 QML 코드의 메소드 (들)을 호출 할 수있다.
는 [main.qml]
import QtQuick 2.0
Rectangle {
width: 360
height: 360
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
Controller.onItemClicked();
}
}
}
난이 도움이되기를 바랍니다.
+0
작동합니다 .. 많이 고마워요! !! –
+0
당신은 환영합니다, @ Niikhil Patil! – mhcuervo
관련 문제
- 1. C# 웹 응용 프로그램 이벤트 처리
- 2. QtQuick 키 프레스 이벤트 전파
- 3. C#을 사용하여 여러 클래스에서 이벤트 처리
- 4. 웹 응용 프로그램 수준에서 이벤트 동시성 처리?
- 5. Vaadin 응용 프로그램 : 응용 프로그램 닫기 이벤트 처리
- 6. C#에서 이벤트 처리 SQL 서버를 사용하는 winform 응용 프로그램
- 7. 클래스에서 예외 처리 C++
- 8. C# winform 응용 프로그램 해결 문제가 있습니까?
- 9. C# 플러그인 이벤트 처리
- 10. 콘솔 응용 프로그램 종료 이벤트 C#
- 11. GUI 응용 프로그램의 이벤트 처리 스레드 C++
- 12. C++을 사용하여 다른 응용 프로그램 처리
- 13. Exe (콘솔 응용 프로그램) 문제 해결
- 14. Android 응용 프로그램 문제 해결
- 15. Delphi 응용 프로그램 해결 문제
- 16. C#의 응용 프로그램 닫기 이벤트
- 17. Skype4COM C++ 이벤트 처리
- 18. 스레드 이벤트 처리 (C#)
- 19. C++/CLI의 이벤트 처리
- 20. C++에서 이벤트 처리
- 21. C# 스레드 처리 이벤트
- 22. C#을 이벤트 처리
- 23. SVG 플러그인을 사용한 QtQuick 2.0 응용 프로그램 배포
- 24. QtQuick, QML 기반 응용 프로그램 내용 보이지 않음
- 25. 동일한 클래스에서 여러 JComboBox 이벤트 처리
- 26. Windows 응용 프로그램에서 이벤트 처리
- 27. 활성 GUI 업데이트로 응용 프로그램 닫기 이벤트 처리
- 28. 내 C++ 프로그램 문제 해결
- 29. C++에서 C# COM 이벤트 처리
- 30. RTP의 응용 프로그램 정의 이벤트
http://stackoverflow.com/questions/21437841/how-to-connect-a-qt-quick-button-click-to-ac-method/21438337#21438337 –
가능한 복제본 ... "main.obj : -1 : 오류 : LNK2019 : 해결되지 않은 외부 기호"public : __cdecl SomeClass :: SomeClass (클래스 QObject *) "(0SomeClass @@ QEAA @ PEAVQObject @@@ Z) function main " –
SomeClass :: SomeClass (QObject *)의 구현을 포함하는 .cpp 파일과 함께 .h 및 .cpp 파일을 SomeClass에 프로젝트에 추가 했습니까? –