Qt Widgets 和 Qt Quick / QML

简述

Qt Widget 是Qt传统的C++界面类库;
Qt Quick 是Qt新生的QML界面类库;
QML(Qt Modeling Language)是一种用户界面规范的声明式语言,用于替换Qt C++语言实现界面编程;

Qt Quick详述

Qt Quick模块是编写QML应用程序的标准库,提供QML引擎和语言基础设施,提供使用QML创建用户界面所需的所有基本类型。它提供了一个可视化画布,包括用于创建和动画可视化组件、接收用户输入、创建数据模型和视图以及延迟对象实例化的类型。
Qt Quick模块提供了QML API和c++ API,前者为使用QML语言创建用户界面提供了QML类型,后者为使用c++代码扩展QML应用程序提供了c++ API。

Qt Widget 和 Qt Quick的区别

Widget Quick
性能 高,依赖CPU 高,依赖CPU、GPU
原生样式 高,调的是系统界面库,界面与系统风格一致 低,直接操作系统显卡,需要自行模拟样式
可扩展性 弱,由于系统界面库的封装,想要改某些细微样式非常困难 高,由于能操作每个像素,想怎么改就怎么改
移动平台支持 弱,由于这些界面库出道的时候,移动平台还没兴起,所以在这些平台上有些水土不服,尤其是触屏支持不好 高,设计之初就考虑了移动平台,OpenGL ES也支持完善
动画、态响应支持 弱,受限于系统界面库的能力,要实现丰富、流畅的动画比较困难 高,由于底层就是对像素进行操作,各种动画就是对这些像素的一种宏观逻辑上的变化,并不改变底层渲染的机制,所以支持完善、流畅
稳定性 高,由于开发那么多年了,该发现的bug应该差不多都发现了 弱,限于发展时间短,应用范围不广,开发推进快,所以没有传统界面库那么稳定。

如何使用Qt Quick

Qt Creator 是 Qt 开发的首选工具,也可用于 Qt Quick。(我用的是5.10版本的,如需要请选择下载安装)

新建工程

点击New Project 后,按需选择以下Qt Quick Application - xxx任意一项,一路默认即可
Qt Widgets 和 Qt Quick / QML_第1张图片
Qt Quick Application - Empty 为空白窗体模板工程,Scroll 为带滚动条的窗体模板工程,Stack 为带分页的窗体模板工程, Swipe 为滑动窗体模板工程,Canvas 3D 为3D动态模板工程

下面新建一个Empty空白模板工程

//main.cpp
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);//使能高分屏(High-DPI),Qt从5.6.0开始支持

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;//实现C++与QML混合编程
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

待续。。。

你可能感兴趣的:(日常学习记录)