gpt4 book ai didi

c++ - 是否可以从 C++ 创建 Qml 组件?

转载 作者:行者123 更新时间:2023-11-28 01:33:55 25 4
gpt4 key购买 nike

有什么方法可以从 C++ 创建/附加 QML 组件吗?

例如,如果我有这个 QML:

Window {
id: window
objectName: "windowName"
title: "windowName"
width: 480
height: 800

Rectangle {
id: frmHeader
objectName: "frmHeader"
width: parent.width
height: parent.height
}
}

是否可以在 Rectangle 上附加一个 TextInput

最佳答案

在您的情况下,您应该遵循以下步骤:

  • 通过 findChild 使用 objectName 查找项目。

  • 使用 QQmlComponent 创建项目

  • 添加 parent作为属性(property)。

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlComponent>
#include <QQmlProperty>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;

QObject *frmHeader = engine.rootObjects().first()->findChild<QObject *>("frmHeader");
QQmlComponent component(&engine);
component.setData("import QtQuick 2.7 \n"
"TextInput{ \n"
"text: \"hello world :D\" \n"
"}", QUrl());
QObject *text_object = component.create();
if(text_object && frmHeader)
Q_ASSERT(QQmlProperty::write(text_object,
"parent",
QVariant::fromValue(frmHeader)));

return app.exec();
}

关于c++ - 是否可以从 C++ 创建 Qml 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com