2017-10-19 1 views
1

안녕 얘들 아, 나는 TextField QML의 텍스트를 가져 와서 C++의 QString에 전달해야한다.C++에서 QString의 TextField 텍스트를 전달하는 방법은 무엇입니까?

Firstpage.qml :

Component { 

    id: mainView 

    Row { 

     Image { 
      id: logo 
      anchors.fill: parent 
      source: "Imagens/jscalcadosLogo.png" 
     } 

     ColumnLayout { 
      id: layoutLogin 
      anchors.centerIn: parent 
      anchors.margins: 3 
      spacing: 3 

      TextField { 
       id: login 
       objectName: "login" 
       Layout.fillWidth: true 
       placeholderText: "Username" 

      } 

하여 Main.cpp : 내가 변환 할 때

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

QGuiApplication app(argc, argv); 
QQmlApplicationEngine engine; 
engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); 

QQuickView *view = new QQuickView; 
view->setSource(QUrl::fromLocalFile("FirstPage.qml")); 
QObject *object = view->rootObject(); 
QObject *textin = object->findChild<QObject*>("login"); 
//QString input = textin->Property("text").toString(); // crash the program 

return app.exec(); 
} 

는여 textIn 프로그램 충돌

어떤 생각을 QString하는? 내 나쁜 영어로 유감이야.

답변

5

일반적인 규칙은 다음과 같습니다 는 대신, 해당 텍스트의 속성이 C++에 QObject 유래 인스턴스를 생성해야 읽기 또는 C++

에서 QML에서 뭔가를 작성하지 마십시오. 컨텍스트 속성으로 설정하거나 싱글 톤으로 등록하여 QObject을 QML에 표시합니다.

QML에서 QML 세계의 텍스트를 C++로 푸시했습니다.

C++과 QML의 상호 작용과 관련하여 StackOverflow에 대한 여러 가지 질문이 있습니다 (나중에 질문 할 가능성이 있으며 질문이 중복되지 않을 수도 있습니다).

또한 documentation에 대한 자세한 정보가 있습니다.

+0

"일반적인 규칙은 : C++에서 QML로 내용을 읽거나 쓰지 마십시오."하지만 CString에서 Mysql을 사용하여 QML 응용 프로그램과 연결하고 "문서"가 명확하지 않기 때문에이 연결을 사용해야합니다. 이 QObject를 QString에 전달해야합니까? –

+1

@ CésarAugusto QObject에서 상속받은 클래스를 생성합니다. 메서드가 필요한 절차를 수행하고, 데이터베이스와 상호 작용하며, 컨텍스트 속성이나 싱글 톤을 사용하여 QML에 노출 한 다음 QML에서 해당 작업을 사용합니다 side는 C++ 측에서 구현 된 코드를 실행합니다. – eyllanesc

관련 문제