Динамически созданный объект Custom QML не виден

У меня есть собственный элемент QML под названием «Cell.qml», который я хотел бы динамически вставить в мое корневое окно и сделать его видимым. Я также попытался изменить свойство z, но не смог это исправить, объект все еще невидим (даже если вывод root-> dumpObjectTree () говорит, что объект существует как дочерний элемент корневого окна)

Это результат после выполнения кода

main.cpp

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

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

QGuiApplication app(argc, argv);

QQmlApplicationEngine engine;

engine.load(QUrl(QStringLiteral("qrc:/main.qml")));QObject *root = engine.rootObjects()[0];
QQmlComponent component(&engine, "qrc:/Cell.qml");
if (component.isReady()){
QObject *object = component.create();
object->setParent(root);
engine.setObjectOwnership(object, engine.CppOwnership);
}
root->dumpObjectTree();

return app.exec();
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2

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

Cell.qml

import QtQuick 2.0
import QtQuick.Controls 2.3

Item{
property string txt: ""property color c: "#d4ccc4"visible: true
z:20
Rectangle {
width: 75; height: 75
color: c
visible: true
radius : 3
scale : 1
z:10
Text{
anchors.centerIn: parent
text: txt
font.family: "Helvetica"font.pointSize: 20
color: "white"}
}
}

Вывод root-> dumpObjectTree () ;:

QQuickWindowQmlImpl::
QQuickRootItem::
Cell_QMLTYPE_0::
QQuickRectangle::
QQuickText::

1

Решение

setParent() устанавливает невизуальный, QObject уровень parent член. QQuickItem имеет другое свойство, parentItem какой parent QQuickItem свойство в QML, это то свойство, которое нужно установить, чтобы объект отображался визуально.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]