如何在 2 个 qml 窗口之间进行通信
Posted
技术标签:
【中文标题】如何在 2 个 qml 窗口之间进行通信【英文标题】:How to communicate between 2 qml windows 【发布时间】:2017-03-03 10:33:47 【问题描述】:我有一些关于 QML 的问题。我有一个 TableView,当我单击列标题时,我需要打开一个新窗口,其中包含该列下的所有元素,每个元素左侧都有一个按钮。 单击该按钮应将消息发送回 TableView 以进行更新。 我的问题是:
如何捕捉鼠标点击列? 第二个窗口的最佳解决方案是:具有 2 列的表格视图(一列用于按钮,一列用于元素)?在这种情况下,我不确定如何设置第一列的值... 如何在 2 个 qml 窗口之间传递消息?从第一个窗口发送模型(列下的元素),从第二个窗口发送一个或多个值(取决于选中的按钮数量) 谢谢【问题讨论】:
【参考方案1】:您可以在 QML 中的多个窗口之间进行通信,就像您在任何其他两个 Items
之间进行通信一样,通过 id
s 引用它们或将它们分配给稍后用于引用它们的属性。
一个例子:
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
Item
ApplicationWindow
id: appWindow
width: 500
height: 800
visible: true
ListModel
id: lm
Component.onCompleted:
for (var i = 0; i < 42; i++) append( message: 'Hellow World ' + i )
ListView
id: lv
width: 300
height: 800
model: lm
delegate: Button
text: model.message
onClicked: secondWindow.text = text
ApplicationWindow
id: secondWindow
width: 500
height: 800
x: appWindow.x + 500
y: appWindow.y
visible: true
property alias text: label.text
Text
id: label
anchors.centerIn: parent
【讨论】:
以上是关于如何在 2 个 qml 窗口之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章