2.如何创建与引入qml模块,自定义模块化组件库

本文详细介绍了如何在Qt中创建和引入自定义的QML模块,包括创建模块目录、配置文件、自定义控件的步骤,并解决在使用过程中可能出现的模块未安装错误和组件高亮问题,提供了完整的实践流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建模块

①在工程文件(.pro)同级目录下创建目录(qml_modules)----用于存放所有模块
②在qml_modules目录中创建目录(BinUI)用于存放我们的模块程序
③在BinUI目录下创建三个文件,如下图所示
在这里插入图片描述
a)BinUI.pri 用于引入到工程中
b)BinUI.qrc用于管理我们所有qml资源
c)qmldir 用于管理是否暴露我们的qml资源供外部使用

引入模块

在main.cpp中,加入此行代码用qml工程能够解析我们的模块
注意,而且必须放在engine.load(QUrl(QStringLiteral(“qrc:/main.qml”)));之前
否则,报错qrc:/main.qml:3 module “BinUI” is not installed

engine.addImportPath(":/qml_modules/");


在工程文件中,

include($$PWD/qml_modules/BinUI/BinUI.pri)
QML_IMPORT_PATH = \
    $$PWD/qml_modules \

完成以上两步,项目已经包含了模块进去了,如下图:
在这里插入图片描述

在模块中创建一个自定义控件

①因为考虑一些组件可能由多个qml文件构成;
②所以我们再BinUI目录下面最好创建一个目录代表一个组件
以一个按键为例子,我们在BinUI目录下创建button目录
此目录里面创建BinButton.qml组件,如下图
在这里插入图片描述简单的测试所以我们先随便往BinButton.qml里面写入一些东西
BinButton.qml代码如下

import QtQuick 2.12
import QtQuick.Controls 2.12

Button{

}

完成以上还不行,还记得我们有个qmldir文件吗? 这个文件就是管理我们想要暴露出去的组件,
给外部调用。
所以我们需要
在这里插入图片描述

使用模块中的组件

那么回到main.qml文件中我们进行调用试试吧!
①先引入模块,就好比我们引入import QtQuick 2.12 才可以使用QtQuick 模块里面的东西
我们也需要同样的方法引入模块,在调用组件
在这里插入图片描述
这里注意一下,很多人遇到一种情况,BinButton显示灰的,没高亮,好像没引入成功一样,
先别急,你就这样运行,你会发现也能跑, 这是什么原因呢?

就只是qtcreator 没反应过来,很简单重启qtcreator,你会发现它高亮了
在这里插入图片描述

代码已经上传gitee,有意思的自行下载查看;源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱搞事的程小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值