2017-11-14 34 views
-1

저는 Qt와 Qml을 처음 접했고 어떻게 협력하는지 알아 내려고하고 있습니다.
C++ 사용 위치와 JavaScript 사용 위치가 혼란 스럽습니다. QML 객체 (폼, 입력, 드롭 다운 등)가 두 개 있다고 가정 해 보겠습니다. 이제 분명히 이러한 구성 요소에는 몇 가지 논리 코드가 있습니다. 이 논리 코드를 JavaScript 또는 C++로 작성해야합니까? 내 입력에는 속성 및 신호 그룹이 있다고 가정 해 보겠습니다. 어디서 어떻게 코딩해야합니까? JavaScript로 작성해야한다면, C++가 어떻게 사용되는지. C++과 JavaScript가 어떻게 연결되어 있습니까? 나는 꽤 혼란스러워! 그리고 워드 프로세서도 나를 도울 수 없습니다. 감사합니다Qt Qml Javascript - 어디에서 사용할 수 있습니까?

+1

qml로 할 수 없다면 CML – eyllanesc

+0

QML을 사용하십시오. 대부분의 경우에는 자일링으로 @eyllanesc가 이미 C++을 사용하지 않아야한다고 말했기 때문에 일부 누락이 필요할 때까지 기능. QML을 확장하는 방법으로 C++ 사용 [여기] (https://qmlbook.github.io/)는 QML을 배우기에 좋은 출발점입니다. – folibis

+0

간단한 사용 사례는 C++ 측을 "백엔드"및 QML 프런트 엔드 코드로 보는 것입니다. 그래서 데이터베이스 연결과 물건을 C++ 및 UI와 QML/JS와의 상호 작용을 간단하게 말합니다. – xander

답변

1

QML 언어는 인터페이스를 설명하는 데 사용하기 위해 고안되었습니다. 디자이너를 이해하는 것은 간단합니다.

이것은 프로그램에서 일반적으로 C++로 구현 된 모든 로직과 QML로 구현 된 UI를 갖게됨을 의미합니다. C++과 QML 사이를 연결하려면 QML에 노출 된 C++ 코드가 필요합니다. 그것을 할 수있는 많은 방법이 있습니다. 예를 들어 QML에서 C++ 클래스를 사용할 수있게 만들 수 있습니다 (http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html 참조). 단 하나의 인스턴스 만 QML에서 사용할 수 있도록하거나 QObject 포인터를 QML 환경에 삽입하면됩니다. 이 모든 것들은 Qt 메타 객체 시스템 (http://doc.qt.io/qt-5/qtqml-cppintegration-exposecppattributes.html)을 많이 사용합니다.

// in C++ 
class MyClass 
{ 
    Q_OBJECT 
public slots: 
    int doSomething(); 
    ... 
}; 

int main() 
{ 
... 
    engine->rootContext()->setContextProperty("foo", new MyClass()); 
... 
} 

// in QML 

function foobar() { 
    var anInt = foo.doSomething(); 
} 

당신도 혹시, C++를 사용하여 자바 스크립트에서 모든 것을 구현하지 않고 완전한 프로그램을 작성할 수 있습니다 자바 스크립트를 작성할 수 QML. 그러나 이것은 일반적으로 나쁜 생각입니다. 특히 공연이 필요한 경우 특히 그렇습니다.

일부 사람들과 달리 C++은 QML을 확장하기 위해 여기에 존재하지 않습니다. 그러나 QML은 C++ 객체에 대한 간단한 인터페이스를 제공하여 개발자와 디자이너가 C++을 입력/학습하지 않고도 멋진 UI를 만들 수있게 해줍니다.

QML을 작성할 때 내 개인적인 규칙은 가능한 한 빨리 C++로 이동하는 것입니다. QML에서 간단한 함수를 작성할 수는 있지만, 기본 QML 및 JS 엔진의 최적화 기능을 최대한 간단하게 활용할 수 있어야합니다. QML을 빨리 유지하는 것은 매우 어렵습니다. QML을 사용할 때 고려해야 할 점에 대한 Qt 문서의 전체 페이지가 있습니다 (http://doc.qt.io/qt-5/qtquick-performance.html).