Как я могу изменить текст в QML из другого qml? - PullRequest
0 голосов
/ 07 апреля 2020

Я хотел бы изменить myText.text из main.qml , но myText находится в другой папке. Как я могу это сделать?

--- main.qml ---

import QtQuick 2.14
import QtQuick.Window 2.1
import QtQuick.Controls 2.12
import "qrc:/secondfolder/pagetwo.qml" as PageTwo

Window {
   visible: true
   width: 640
   height: 480
   title: qsTr("Hello World")

   Button {
       id: button
       x: 63
       y: 71
       width: 142
       height: 66
       text: qsTr("Button")

       MouseArea{
           anchors.fill: parent
           onClicked: {
               PageTwo.myText.text = "hello world"
           }
       }
   }
}

--- pagetwo.qml ---

Item {
    Text {
        id: myText
        text: "default text"
    }  
}

Когда я запускаю код, я получаю эту ошибку: "qrc:/secondfolder/pagetwo.qml": no such directory

1 Ответ

1 голос
/ 07 апреля 2020

Вам нужно объявить свой PageTwo в main.qml и присвоить ему идентификатор, например:

PageTwo {
   id: pageTwo
}

Требуется PageTwo.myText.text = "hello world", что вам нужно напишите pageTwo.myText.text = "hello world".

Затем в файле PageTwo.qml вы должны написать property alias myText: myText.

main.qml

import QtQuick 2.14
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    PageTwo {
        id: pageTwo
    }

    Button {
        id: button
        width: 142
        height: 66
        text: qsTr("Button")

        onClicked: {
            pageTwo.myText.text = "hello world"
        }
    }
}

PageTwo

import QtQuick 2.14

Item {
    property alias myText: myText

    Text {
        id: myText
        text: "default text"
    }
}

Я рекомендую вам прочитать this и проверить некоторые qml примеров приложений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...