1、前言
记录一下QML学习的过程,方便自己日后回顾,也可以给有需要的人提供帮助。 |
2、QML
QML是 Qt 框架中的一种声明式编程语言,专门用于快速设计和开发用户界面(UI) |
3、QML和QWidget的区别
特性 | QML(Qt Quick) | QWidget |
---|
实现语言 | QML/JavaScript | C++ |
动态界面 | 流畅动画、触摸交互 | 动画性能差,适合静态布局 |
适用场景 | 现代界面、动画 | 传统桌面应用 |
跨平台 | 支持移动端(Android/iOS)、嵌入式 | 主要支持桌面端(Windows/macOS/Linux) |
复杂性 | 需与C++后端结合 | 直接通过C++实现 |
开发效率 | 快速迭代,适合UI密集型项目 | 编码量大,适合逻辑密集型项目 |
3、QtQuick下的Windows应用
主要讲QML在Windws下如何设置宽度,高度,坐标点,标题,信号与槽,键盘事件 |
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5
Window {
visible: true
width: 640
height: 480
title: qsTr("My QML")
signal mysignal()
property int myValue: 0
minimumWidth: 300
minimumHeight: 400
maximumWidth: 700
maximumHeight: 600
opacity: 0.8
onMysignal: {
}
onWidthChanged: {
console.log("width",width)
}
onMyValueChanged: {
}
Button {
id:btn1
focus: true
objectName: "btn1"
width: 50
height: 50
background: Rectangle{
border.color: btn1.focus ? "blue" : "back"
}
onClicked: {
console.log("btn1 clicked");
}
Keys.onRightPressed: {
btn2.focus = true;
}
}
Button {
id:btn2
x:100
objectName: "btn2"
width: 50
height: 50
background: Rectangle{
border.color: btn2.focus ? "blue" : "back"
}
onClicked: {
console.log("btn2 clicked");
}
Keys.onLeftPressed: {
btn1.focus = true;
}
}
onActiveFocusItemChanged: {
console.log("active focus item changed",activeFocusItem,"object name",activeFocusItem.objectName)
}
}
4、总结
以上就是QML的一些基础知识了,后续还会继续更新,浏览过程中,如若发现错误,欢迎大家指正,有问题的欢迎评论区留言或者私信。最后,如果大家觉得有所帮助,可以点一下赞,谢谢大家!祝大家天天开心,顺遂无虞! |