2025年ubuntu安装qt命令(ubuntu命令行安装qt)

ubuntu安装qt命令(ubuntu命令行安装qt)一 1 特点 Qt Quick 是一个现代化的 基于 QML 的框架 QML 是 Qt Quick 的关键组成部分 是一种基于 JavaScript 的声明性语言 用于描述用户界面的视觉和行为 Qt Quick Controls 是一套预先设计好的用户界面素库 包含了诸如按钮 文本框 菜单等常见的 UI 控件 这些控件可以被轻松地嵌入到 QML 界面中 并且能够很好地适应不同平台和设备 Qt Quick 可以用于多种平台 包括桌面 移动设备和嵌入式系统 二 Qt Quick 基本素 nbsp



一、1、特点


Qt Quick是一个现代化的、基于QML的框架。


● QML是Qt Quick的关键组成部分,是一种基于JavaScript的声明性语言,用于描述用户界面的视觉和行为。


● Qt Quick Controls是一套预先设计好的用户界面元素库,包含了诸如按钮、文本框、菜单等常见的UI控件。这些控件可以被轻松地嵌入到QML界面中,并且能够很好地适应不同平台和设备。


● Qt Quick可以用于多种平台,包括桌面、移动设备和嵌入式系统。



二、Qt Quick 基本元素


Qt Quick 作为 QML 的标准库,提供了很多基本元素和控件来帮助我们构建 Qt Quick 应用。如果拿 C++ 来比拟, QML 就相当于 C++ 语言本身,而 Qt Quick 相当于 STL 。好吧,你可能觉得有点驴头不对马嘴,没关系,有这么点儿意思就成。



Rectangle


main.qml 的第三行代码,定义了一个 Rectangle 类型的对象作为 QML 文档的根对象。关于对象在 qml 文件中的描述,《Qt on Android:QML 语言基础》一文中已经讲解,这里不再赘述。下面咱们看看 Rectangle 到底是什么。



Rectangle 用来绘制一个填充矩形,可以带边框,也可以不带,可以使用纯色填充,也可以使用渐变色填充,甚至还可以不填充而只提供边框……



Rectangle 有很多属性。



width 用来指定宽, height 用来指定高,我们已经见识过了。



color 属性可以指定填充颜色,而 gradient 属性则用来设置渐变色供填充使用,如果你同时指定了 color 和 gradient ,那么 gradient 生效;如果你设置 color 属性为 transparent ,那么就可以达到只绘制边框不填充的效果。



border.width 指定边框的宽度, border.color 指定边框颜色。



Rectangle 还可以绘制圆角矩形,你只要设置 radius 属性就行了。



三、QML与QtQuick关系


“QML——Qt Meta Language”



QML是一种声明式脚本语言,是QtQuick技术的核心与基础。



QML是一种规范和编程语言,可以用来描述一个程序的UI。



QML模块提供QML引擎和语言框架——负责解析qml脚本。



1、QML文档分为import 和declaration两部分。



import部分,指定该文档所需要引入的模块,通常是一个模块和版本号。也可以引入其他文件。



四、Qt Widgets 与 QML/Qt Quick


Qt 4.7 发布时,引入了 QML,用于移动开发,其全面支持触摸操作、流畅的动画效果等。但在 Qt 5 中,QML 已经不再局限于移动开发,也可用于开发传统的桌面程序。


相比之下,Qt Widgets 更“老”、更成熟,而 QML/Qt Quick 则更“新”、更“现代”。


无论如何,Qt Widgets 和 QML/Qt Quick 都可以在多个平台上使用(Windows、Linux、OS X等)


对于传统的桌面程序来说,优先考虑使用 Qt Widgets,若要开发更“现代”的 UI 与高级应用,建议使用 Qt5.x + QML 2.x + QtQuick 2.x。


对于移动端开发来说,建议使用 QML,协同 JavaScript,简单快捷、渲染效果更佳、界面更炫酷。不建议使用 Qt Widgets,其显示效果、适应性都不好




五、QtQuick 1.x VS QtQuick 2.x


全新的 Qt 版本


QtQuick 1.x 基于 Qt4.x。


QtQuick 2.x 随 Qt5.0 一起引入。


全新的绘图系统


QtQuick 1.x 使用 QGraphicsView/QPainter API 来绘制场景。


QtQuick 2.x 基于 Scene Graph,一个 OpenGL(ES)2.0 抽象层,对绘图进行了高度优化,效率更高。


全新的 QML 引擎


Qt 4.x 中,QML 引擎基于JSC(JavaScriptCore - Webkit 的 JS 引擎)。


Qt 5.0 中引入 V8(Google 的开源高性能 JavaScript 引擎,用 C++ 编写,用于 Chromium、Node.js 和多个其他嵌入应用程序)。


Qt 5.2 中引入了 V4 JS 引擎,针对 QML 用例进行了优化,并且可以选择关闭 JIT(Just-In-Time)编译,以符合 iOS 和 WinRT 平台的限制。个头更小、反应更快、扩展性也非常好。


从 Qt 5.5 开始,加入了一个新模块 QtQuick3D,它提供使用 QML 语言创建 3D 应用程序/游戏的能力,其使用的是一个被命名为 FrameGraph 的新引擎,而非 Scene Graph(因为太 2D/2.4D)。


模块、属性和方法、类型和 API、C++ 代码(QtDeclarative 被移除了,替代的它是Qt QML 和 Qt Quick 模块)、QML 插件的更改




六、什么是QML?


QML是一种用户界面规范和编程语言。它可以使开发人员和设计师创建出高性能、流畅动画和视觉吸引力的应用程序。QML提供了一种高度可读的、声明式的、类似JSON的语法,支持与动态属性绑定相结合的命令式JavaScript表达式。


QML语言和引擎基础设施由Qt QML模块提供。



七、什么是Qt Quick?


Qt Quick是用于QML的标准类型和功能的库。它包括可视类型、交互类型、动画、模型和视图、粒子效果和着色器效果。通过一个导入语句,QML应用程序开发人员可以获得所有这些功能。


Qt Quick模块提供了QtQuick QML库。



八、只有qml没有quick可以开发吗


可以仅使用QML来开发应用程序,而不使用Qt Quick模块。


QML是一种用于描述用户界面的声明性语言,它可以独立于Qt Quick模块使用。


你可以在QML中创建自定义的界面组件、布局和逻辑,并且可以使用JavaScript来处理用户输入和实现应用程序的行为。


但是,使用Qt Quick模块可以为QML提供更多的预定义类型和功能,使开发过程更加简单和高效。



九、main.cpp


注意: Qt Quick 的mian函数有点区别,加载UI的方式不同,程序如下


#include <QGuiApplication>


#include <QQmlApplicationEngine>



int main(int argc, char *argv[])


{


/* 启用Qt应用程序的高DPI缩放功能 */


QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);



/* 创建一个Qt应用程序的实例 */


QGuiApplication app(argc, argv);



QQmlApplicationEngine engine;


const QUrl url(QStringLiteral("qrc:/main.qml"));


/* 将 QQmlApplicationEngine 对象的 objectCreated 信号连接到一个 lambda 函数上 */


/* lambda 函数用于在 QML 文件中的根对象被创建时进行处理,检查对象是否成功创建,如果创建失败则退出应用程序 */


QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,


                  &app, [url](QObject *obj, const QUrl &objUrl) {


      if (!obj && url == objUrl)


         QCoreApplication::exit(-1);


}, Qt::QueuedConnection);


/* 加载QML文件并显示用户界面 */


engine.load(url);



return app.exec();


}


编程小号
上一篇 2026-03-08 15:21
下一篇 2025-06-06 20:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/51535.html