PyQt/QtQuick/README.md

32 lines
1.1 KiB
Markdown
Raw Permalink Normal View History

2019-02-02 01:13:14 +08:00
# QtQuick
2019-03-12 12:47:56 +08:00
- 目录
2019-05-22 11:07:42 +08:00
- [Flat样式](#1Flat样式)
2019-09-18 23:20:18 +08:00
- [QML与Python交互](#2QML与Python交互)
2019-03-12 12:47:56 +08:00
2019-02-02 01:13:14 +08:00
## 1、Flat样式
[运行 FlatStyle.py](FlatStyle.py)
2019-09-18 23:20:18 +08:00
![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)