QML与QWidget
2024-05-06
10
0
QT有两种开发UI程序的方法。
第一种就是传统的QWidget,这就是系统提供的C++的桌面应用程序开发框架,即各类控制。
另一种就是基于标记语言QML实现的。
QML
QML(Qt Meta-Object Language)是Qt提供的一种标记性语言,用于快速创建用户界面。
使用QML来开发应用程序界面时,使用扩展名qml来存储QML标记语言。
总不能和Cpp文件混在一起吧。
一个简单的QML示例如下:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
}
这玩意就相当于Html和CSS的结合体。
将以上的文件保存为main.qml后,在应用程序中通过如下方法调用:
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
{
return -1;
}
这样QT应用程序会自动解析QML文件中的标记语言,按照标记语言的要求渲染程序界面。
QML与QWidget的选择
先用QWidget,后有QML。所以QWidget的开发比较传统,有很多丰富的开发库的资料,但是开发过程比较传统,但是因其更接近最底层的开发模块,所以开发更加灵活,但需要比较多的操作系统UI开发知识。所以说为了实现复杂的软件,可以选择QWidget.
QML是后来者,更加轻量,可以使用很少的语言实现很多非常炫酷的效果。但总是在别人的定义好的框架下玩耍,多多少少有点限制。所以企业级的更复杂的软件建议使用QWidget,个人为了追求快速实现软件,不想花费太多的心思,更关注业务或者移动端,可以搞搞QML。
所以QWidget与QML的关系可以简单理解为C++和C++定义好的类的关系。
QML的调试
QML毕竟是解析性语言,所以不能像C++一样那么方便的调试。
你需要调试这个程序的时候,请右键项目-》属性-》Qt Project Settings->QML->Enable QMl Debugging->改为是,这样之后你在qml文件中打上的断点就可以被命中了。