QML入门
基本语法
1 | import QtQuick 2.0 //导入内建qml的类型 |
基本类型
bool | double | enumeration | int |
---|---|---|---|
list QML对象集合 | real 浮点 | string | url |
var s一般属性类型 | data 日期 | point | rect |
size |
布局
1 | import QtQuick 2.0 |
函数定义与调用
1 | import QtQuick 2.0 |
自定义信号
1 | import QtQuick 2.0 |
基本可视元素
1 | import QtQuick 2.0 |
事件
1 | import QtQuick 2.0 |
导航案例
1 | import QtQuick 2.0 |
按方向键盘会出现这种交替的效果
动画
1.动画作为属性值的来源
语法:动画 on 属性
1 | import QtQuick 2.0 |
1 | //在此基础上增加缓和曲线,具有回弹的效果 |
2.行为动画
Behavior为一个属性值来指定默认的动画
语法:Behavior on 属性
1 | Item{ |
3.信号处理器中的动画
1 | Rectangle{ |
4.独立动画
动画作为普通QML对象来创建
1 | Rectangle{ |
5.状态切换
1 | Rectangle{ |
6.属性动画元素
1 | Rectangle{ |
7.组合动画
1 | Rectangle{ |
QML与C++混合编程
1.利用QQuickView
在 pro文件中一定加入quick模块
QT += quick
#include <QApplication> #include <QQuickView> int main(int argc,char* argv[]) { QApplication app(argc,argv); //加载qml文件到视图 QQuickView view; view.setSource(QUrl("column.qml")); view.show(); return app.exec(); }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 2.qml使用C++函数
+ 在cpp文件中定义函数
```cpp
#include <QObject>
#include <QDateTime>
class ApplicationData : public QObject
{
Q_OBJECT
public:
explicit ApplicationData(QObject *parent = nullptr);
//QML中调用C++函数,(注册一个方法)这个函数需要以Q_INVOKABLE进行标记
//或者函数是一个QT的槽函数
Q_INVOKABLE QDateTime getCurrentDataTime() const{
return QDateTime::currentDateTime();
}
};qml中调用函数
1 | import QtQuick 2.0 |
- main函数
1 |
|
3.C++调用qml中的函数
- qml文件
1 | import QtQuick 2.0 |
- main文件
1 |
|
4. qml中信号出发cpp中槽函数
- qml
1 | import QtQuick 2.0 |
- cpp文件
1 |
|
- main函数
1 |
|