QML访问外部代码


项目创建

Create Project…-> Other Project->Qt Quick UI Prototype->choose
->项目命名,选择项目路径 ->next->kit->next->finish


一、访问同一目录下代码

1、在同一目录下新建qml文件

file->new file->Qt->QML file(Qt Qucik 2)->choose
->file name(Qt要求首字母要大写) ->文件路径->next->finish
在(project name).qml同级目录下多了(file name).qml文件

2、在project name.qml访问新建qml文件

同一级目录下访问代码不需要使用import,直接访问即可

新建qml文件
import QtQuick

Text {
    id: mytype
    text: qsTr("MyType")
}
工程的qml
import QtQuick

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    MyType
    {
        x:10
        y:10
    }
}

验证结果
在这里插入图片描述

二、访问库

1.语法格式

import 库名 主版本号.副版本号 as 标识
代码如下(示例):

import <ModuleIdentifier> [<Version.Number>] [as <Qualifier>] 
import QtQuick.Controls as MyControls

2.验证

代码如下(示例):

import QtQuick
import QtQuick.Controls as Mybutton

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    MyType
    {
        x:10
        y:10
    }

    Mybutton.Button
    {
        Text {
            text: qsTr("mybutton")
        }
    }
}

在这里插入图片描述

三、访问目录下代码

语法:

import "<DirectoryPath>" [as <Qualifier>] 
import "./TestFolder" as TestFolder

目录下文件内容:
import QtQuick

Text {
    id: myfolder1
    text: qsTr("Myfolder1")
}

验证结果
在这里插入图片描述

四、访问js代码

import "<JavaScriptFile>" as <Identifier> 
import QtQuick.Controls as MyControls

新建js文件
file->new file -> Qt -> JS file


QML界面中显示外部程序,可以通过将外部程序加载到QWidget框架中,然后再将QWidget窗口加载到QML界面中实现。具体步骤如下: 1. 创建一个QWidget窗口,并将外部程序加载到该窗口中。 2. 将QWidget窗口加载到QML界面中。 下面是一个示例代码: ```cpp // main.cpp #include <QApplication> #include <QQmlApplicationEngine> #include <QQuickWidget> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个QWidget窗口 QQuickWidget widget; widget.setSource(QUrl("qrc:/qml/ExternalProgram.qml")); // 加载外部程序的QML文件 // 创建一个QQmlApplicationEngine QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/qml/Main.qml"))); // 加载主界面的QML文件 // 将QWidget窗口加载到QML界面中 QObject *rootObject = engine.rootObjects().first(); QQuickItem *qmlItem = qobject_cast<QQuickItem*>(rootObject); qmlItem->setProperty("externalProgram", QVariant::fromValue(widget.rootObject())); return app.exec(); } ``` ```qml // Main.qml import QtQuick 2.0 Item { width: 800 height: 600 // 外部程序的容器 Item { id: externalProgramContainer anchors.fill: parent } // 加载外部程序的QML文件 Component.onCompleted: { externalProgramContainer.children = [externalProgram]; } } ``` ```qml // ExternalProgram.qml import QtQuick 2.0 Rectangle { width: 400 height: 300 color: "lightblue" // 外部程序的内容 Text { text: "External Program" anchors.centerIn: parent font.pixelSize: 24 } } ``` 通过以上代码,我们创建了一个QWidget窗口,并将外部程序的QML文件加载到该窗口中。然后,我们将该QWidget窗口加载到主界面的QML文件中的一个容器中,从而在QML界面中显示外部程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值