PyQt/QtQuick/README.md
2019-09-18 23:20:18 +08:00

31 lines
1.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# QtQuick
- 目录
- [Flat样式](#1Flat样式)
- [QML与Python交互](#2QML与Python交互)
## 1、Flat样式
[运行 FlatStyle.py](FlatStyle.py)
![FlatStyle](ScreenShot/FlatStyle.gif)
## 2、QML与Python交互
[运行 Signals.py](Signals.py)
交互的办法有很多种由于主要界面功能都是有QML来实现Python只是作为辅助提供部分功能。
于是和浏览器中js与python交互方式类似提供一个Python对象给QML访问。
1. 通过 `engine.rootContext().setContextProperty('_Window', w)` 注册提供一个Python对象
2. Python对象中被访问的方法前面使用装饰器 `@pyqtSlot`,比如: `@pyqtSlot(int)` 或者 `@pyqtSlot(str, result=str) # 可以获取返回值`
3. QML中的信号或者Python对象中的信号都可以互相绑定对方的槽函数
```js
Component.onCompleted: {
// 绑定信号槽到python中的函数
valueChanged.connect(_Window.onValueChanged)
// 绑定python中的信号到qml中的函数
_Window.timerSignal.connect(appendText)
}
```
![Signals](ScreenShot/Signals.gif)