2 个不同 QML 文件中的 2 个不同对象之间的通信
Posted
技术标签:
【中文标题】2 个不同 QML 文件中的 2 个不同对象之间的通信【英文标题】:Communication between 2 different objects in 2 different QML files 【发布时间】:2020-01-29 08:06:06 【问题描述】:我有一个 main.qml 文件和另一个“example.qml”文件。当我从“example.qml”文件中按下按钮时,我想更改“main.qml”文件中的文本。我尝试定义文本的来源。我试过发送信号。我尝试使用加载器,但总是走到了死胡同。
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Imagine 2.12
import QtQuick.Window 2.0
//main.qml
Window
visible: true
width: 1080
height: 720
color: "black"
title: qsTr("MY GUI")
Text
id: deneme
x: 100
y: 400
color: "white"
text: "Trial"
//example.qml
Item
id: difflock
Rectangle
id: diffLockRect
width: 1080
height: 720
color: "red"
signal mySignal
Button.
onClicked: main.deneme.text = "Finally"
【问题讨论】:
【参考方案1】: 创建一个以 Example.qml 命名的新 qml(首字母应为大写) 在 main.qml 中定义 Example.qml 可以访问 main.qml 中的对象main.qml
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Imagine 2.12
import QtQuick.Window 2.0
Window
visible: true
width: 1080
height: 720
color: "black"
title: qsTr("MY GUI")
Exampleid:rfrnc // You can also reach the other qml objects by using this id
Text
id: deneme
x: 100
y: 400
color: "white"
text: "Trial"
Example.qml
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Imagine 2.12
import QtQuick.Window 2.0
Item
id: difflock
Rectangle
id: diffLockRect
width: 1080
height: 720
color: "red"
signal mySignal
Button
onClicked: deneme.text = "Finally"
【讨论】:
以上是关于2 个不同 QML 文件中的 2 个不同对象之间的通信的主要内容,如果未能解决你的问题,请参考以下文章
C# - 在不同日期的 2 个 DateTime 对象之间搜索时间
如何在 2 个 NSManagedObjectContext 之间复制对象