qt笔记之纯qml项目详解

qt笔记之纯qml项目详解

code review!

文章目录

一..qmlproject项目文件和.pro项目文件

1.1.纯qml项目一:使用.pro文件

1.1.1.目录结构
复制代码
MyQmlApp/
├── main.qml
├── assets/
│   └── images/
├── qmldir
└── MyQmlApp.pro
1.1.2.main.qml
qml 复制代码
import QtQuick 2.15
import QtQuick.Window 2.15

Window {
    visible: true
    width: 640
    height: 480
    title: "My QML App"

    Rectangle {
        width: 200
        height: 200
        color: "lightblue"
        anchors.centerIn: parent

        Text {
            text: "Hello, QML!"
            anchors.centerIn: parent
        }
    }
}
1.1.3.qmldir

如果使用自定义模块,可以在这个文件中指定模块路径。但对于简单项目,这个文件可以是空的。

plaintext 复制代码
# Leave empty or define custom modules
1.1.4.MyQmlApp.pro
plaintext 复制代码
TEMPLATE = app
QT += qml quick

SOURCES +=

RESOURCES += \
    assets.qrc
1.1.5.assets.qrc

如果有资源文件(如图片),可以在这里列出:

xml 复制代码
<RCC>
    <qresource prefix="/">
        <file>images/example.png</file>
    </qresource>
</RCC>
1.1.6.使用说明
  1. 加载项目 :在 Qt Creator 中打开 MyQmlApp.pro 文件。
  2. 运行项目:点击"运行"按钮即可启动应用程序。
  3. 预览 QML 文件 :可以使用 qmlscene main.qmlqml main.qml 进行快速预览。

1.2.纯qml项目二:使用.qmlproject文件

1.2.1.目录结构

首先,创建项目目录结构:

复制代码
MyQmlProject/
│
├── main.qml
└── MyQmlProject.qmlproject
1.2.2.创建 main.qml

main.qml 中编写一个简单的 QML 应用,例如:

qml 复制代码
import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: "My QML Project"

    Rectangle {
        anchors.fill: parent
        color: "lightblue"

        Text {
            anchors.centerIn: parent
            text: "Hello, QML!"
            font.pointSize: 24
        }
    }
}
1.2.3.创建 MyQmlProject.qmlproject

这是项目的核心文件,用于指定项目的 QML 资源:

qml 复制代码
Project {
    // 包含的 QML 文件
    files: [
        "main.qml"
    ]
    
    // 可指定资源目录
    // directories: [
    //     "resources"
    // ]
}
1.2.4.使用 Qt Creator 打开项目
  1. 打开 Qt Creator。
  2. 选择"打开文件或项目"。
  3. 导航到 MyQmlProject 目录并选择 MyQmlProject.qmlproject 文件。
  4. 项目加载后,可以在 Qt Creator 中编辑和运行项目。
1.2.5.运行项目

点击"运行"按钮,Qt Creator 将会启动应用程序,并显示一个窗口,上面写着"Hello, QML!"。

1.3..qmlproject.pro 文件的区别

  • .qmlproject 文件:

    • 专门用于 QML 项目。
    • 适合纯 QML 和 JavaScript 项目。
    • 不涉及 C++ 编译或链接。
    • 使用简单的 JSON 风格语法。
    • 如果项目主要是 QML 和 JavaScript,使用 .qmlproject 是最方便的。
  • .pro 文件:

    • 用于 Qt 的 C++ 项目。
    • 包含编译和链接参数。
    • 支持更复杂的项目配置,例如资源文件、库依赖等。
    • 使用 qmake 工具生成 Makefile。
    • 如果项目需要 C++ 代码,或者是混合项目,可能需要 .pro 文件进行更复杂的配置。

二.直接编译与运行(也称为预览)qml文件

在 Qt 中,确实可以创建纯 QML 项目。纯 QML 项目主要用于构建基于 QML 的 UI,而无需 C++ 代码。这种项目通常适合于简单的应用程序或快速原型设计。

使用场景

  1. 快速原型设计

    • 利用 QML 的声明式语法快速设计和测试 UI。
    • 适用于需要快速迭代和验证用户界面的项目。
  2. 简单应用程序

    • 不需要复杂逻辑的应用程序可以完全用 QML 实现。
    • 适合于展示内容、动画效果或其他简单交互的应用。
  3. 嵌入式设备

    • 在资源受限的设备上,QML 的轻量特性非常适用。
    • 通过 QML 实现高效的 UI 渲染。

编译和预览纯 QML 文件

  1. 使用 Qt Creator

    • 创建项目

      1. 打开 Qt Creator。
      2. 选择"新建项目"。
      3. 选择"Qt Quick 应用程序"。
      4. 在向导中选择"无 C++ 支持"选项,创建一个纯 QML 项目。
    • 预览 QML 文件

      1. 打开 QML 文件。
      2. 点击"设计"视图,可以看到实时设计预览。
      3. 使用"快速预览"(Ctrl + R 或 Command + R)在内置的 QML 预览器中运行。
  2. 使用命令行工具

    • qmlscene

      • 用于快速预览 QML 文件。
      • 命令:qmlscene yourfile.qml,直接在窗口中预览。
    • qml

      • Qt 6 中推荐使用的工具。
      • 命令:qml yourfile.qml,功能类似于 qmlscene

注意事项

  • 纯 QML 项目虽然简单易用,但在需要复杂逻辑或与系统交互时,可能需要结合 C++。
  • 在大型项目中,通常使用 QML 结合 C++ 以实现更复杂的功能和性能优化。

通过这些工具和方法,可以高效地开发和测试纯 QML 项目。

三.Qt Designer 可以打开.ui文件或.qml文件吗?

Qt Designer 可以打开 .ui 文件。这些文件是为 Qt Widgets 应用程序设计的用户界面文件,使用 XML 格式。

然而,Qt Designer 不支持直接打开 .qml 文件。.qml 文件是用于 Qt Quick 应用程序的用户界面文件,通常使用 Qt Creator 来编辑和设计。

相关推荐
TDengine (老段)3 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)3 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安当加密4 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
Larry_Yanan4 小时前
QML学习笔记(四十二)QML的MessageDialog
c++·笔记·qt·学习·ui
爱喝白开水a4 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽4 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康4 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy4 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
能不能别报错4 小时前
K8s学习笔记(十九) K8s资源限制
笔记·学习·kubernetes
sulikey5 小时前
【Linux权限机制深入理解】为何没有目录写权限仍能修改文件权限?
linux·运维·笔记·ubuntu·centos