QML 信号与槽
方式1
对于 QML 中的属性如果其值发生改变, QML 自动会发生相关信号
on<Property>Changed
这种格式
举例:
1 | MouseArea { |
方式2
比较适合在同一个 QML 文件内
1 | signal <name> (type parameter, type parameter) |
例如:
1 | signal testSignal(real x, real b) |
举例:
1 | Item { |
方式3
适合一对多或者跨 QML
断开就使用 disconnect 就好
1 : 跟信号在同一个范围,可这么写
1 | signal sendSignal(); |
2:如果与信号不在同一范围
1 | MyTest { |
3:Connections 最主要的优势可以连接到没有定义在 QML 的东西
格式:
1 | Connections { |
示例1
2
3
4
5
6Connections {
target: mytest
onTestT: {
send21();
}
}
QML中调用Python的函数
main.qml
1 | import QtQuick 2.15 |
main.py
1 | import os |
Python 连接 QML 信号
(QML 发信号, Python 为槽)
main.qml
1 | import QtQuick 2.15 |
main.py
1 | import sys |
Python获取控件
1 | Text { |
获取控件
1 | txt_obj = engine.rootObjects()[0].findChild(QObject, "mytext") |
获取控件属性的值:
1 | txt_value = txt_obj.property("text") |
设置控件属性的值:
1 | txt_obj.setProperty("text", "Clicked!") |