如何在QML应用中得到一个Item的所有属性,信号及方法,qmlitem
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在QML应用中得到一个Item的所有属性,信号及方法,qmlitem相关的知识,希望对你有一定的参考价值。
参考技术A 这个问题的问题所在就是可以拿到item的id。那么就要看你的item是放在哪里。
如果放在ApplicationWindow 或者Window 下 那么只要定义一个属性指向 item 就可以在全局拿到Item的所有属性.
例如:
ApplicationWindow
property alias myitem: _item
Item
id: _item
如果是在Stackview的某个页面 那么你的要 指向那个页面 _stackView.get(); get参数可以通过 _stackView.find()获取。在页面上定义属性 指向item。那么获取的方法就是
_stackView.get().myitem
诸如此类 还有其他View。
你可以研究 帮助文档中 返回类型是Item的方法。是解决此类问题的关键本回答被提问者采纳
如何在 QML 中捕获信号?
【中文标题】如何在 QML 中捕获信号?【英文标题】:How to capture a signal in QML? 【发布时间】:2012-02-29 01:34:04 【问题描述】:如何将 s 信号从一个 qml 组件发送到另一个?
下面是一个例子:
Rectangle
id: main
width: 360; height: 360
signal clicked()
Text
id: testStr
anchors.centerIn: parent
text: "Hello World"
MouseArea
id: mouseArea
anchors.fill: parent
onClicked: Qt.quit();
Component.onCompleted: clicked()
onClicked: testStr.text = "Demo"
如何在其他组件中捕获信号?
【问题讨论】:
【参考方案1】:你应该使用组件信号的connect()
方法(信号本身就是对象)。
function clickHandler()
console.log('main clicked')
Component.onCompleted:
main.clicked.connect(clickHandler)
见http://developer.qt.nokia.com/doc/qt-4.8/qmlevents.html
【讨论】:
谢谢。能不能说明signal(onXXXXX)只在自身使用,如果想在其他中捕获,使用Connecet? 是的,如果您在 qml 文件中声明组件的实例,您可以将代码分配给该组件的预定义 onXxx 插槽。它已经连接,您只需将表达式绑定到它。如果要将信号与另一个实例或函数的槽连接,则必须使用connect
方法。【参考方案2】:
在另一个对象中,您只需添加一个on
字样,后跟信号名称。例如:
Rectangle
YourQmlObject
onClicked: ...
(clicked 是一个令人困惑的信号名称,因为它很常见。但如果你调用了你的信号orange
,你就会绑定onOrange:
)
【讨论】:
感谢您的帮助。如果有很多 'YourQmlObject' ,那么我会在每个 Component 中写 onClicked: ... 吗?还有其他方法吗? 信号将向上传播,因此您可以将“地块”放入单个容器AllMyQmlObjects
,这是您的对象的长列表,并将 onClicked:
处理程序放入最终包含的任何文件中AllMyQmlObjects
.【参考方案3】:
你可以使用 QML 连接元素
Connections
target: yourQmlObject
onClicked: foo(...)
【讨论】:
【参考方案4】:QML
Button
id: btn_add_pq
text: "Add"
onClicked:
var component = Qt.createComponent("add_pq.qml")
var dialog = component.createObject(root)
dialog.open()
dialog.accepted.connect(function()
console.log("ID :" + window.in_id)
console.log("Name :" + window.in_name)
console.log("Comment:" + window.in_comment)
)
add_pq.qml
Dialog
id:dialog
...
property alias in_id: txtID.text
property alias in_comment: txtComment.text
property alias in_name: txtName.text
...
contentItem: GridLayout
...
TextField
id: txtComment
Layout.alignment: Qt.AlignRight
Button
Layout.columnSpan: 2
text: "Add"
Layout.alignment: Qt.AlignRight
onClicked:
dialog.click(StandardButton.Save)
【讨论】:
以上是关于如何在QML应用中得到一个Item的所有属性,信号及方法,qmlitem的主要内容,如果未能解决你的问题,请参考以下文章