2017-11-05 24 views
0

ビジネスロジックをMain.qmlに、UIをMainForm.ui.qmlに設定しようとしていますが、どちらもウィジェットIDで接続できません。QT/QMLビジネスロジックがUIから分離されました

MainForm.ui.qml:

import QtQuick 2.8 
import QtQuick.Controls 2.2 
import QtQuick.Layouts 1.3 

Page { 
    id: page 
    header: TabBar { ... } 
    StackLayout { 
     id: stack 
     Pane { 
     Flow { 
      TextField { 
       id: theText 
      } 
      property alias sendBtn: sendBtn 
      Button { 
       id: sendBtn 
      } 
     } 
     } 
    } 
} 

Main.qml:

import QtQuick 2.8 
import QtQuick.Window 2.2 

Window { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 
    MainForm { 
     anchors.fill: parent 
     sendBtn { 
     onClicked: backend.sendTextToServer(theText.text) 
     } 
    } 
} 

のQt Creatorは言う:

QQmlApplicationEngine failed to load component 
qrc:/Main.qml:12 Cannot assign to non-existent property "sendBtn" 

答えて

1
Invalid property name "sendBtn" (M16)

実行中は、次のメッセージで失敗しました

property alias sendBtn: sendBtnをペインの内側に配置すると、ペインプロパティとして解釈されるので、そのようにはアクセスできません。ページのコンテキストに配置するのは正しいです。

import QtQuick 2.8 
import QtQuick.Controls 2.2 
import QtQuick.Layouts 1.3 

Page { 
    id: page 
    property alias sendBtn: sendBtn 
    property alias theText: theText 
    header: TabBar { ... } 
    StackLayout { 
     id: stack 
     Pane { 
     Flow { 
      TextField { 
       id: theText 
      } 

      Button { 
       id: sendBtn 
      } 
     } 
     } 
    } 
} 
関連する問題