BlinCTApril 3, 2021, 10:55 a.m.

Работа с созданным обьектом qml через Qt.createComponent

Всем привет.
Столкнулся с необходимостью в однмо случаи создавать обьект а в другмо нет.
Делаю так:

Component.onCompleted: {
        if(headers)
        {
            var component = Qt.createComponent("qrc:/Modules/Header.qml");

            if (component.status === Component.Ready)
            {
                component.createObject(parent);
            }
        }
    }

Но мне в этот обьект надо передавать разные проперти. Каким путем это делать?
Так же мне надо другим обьектам передавать по id этого обьекта расположение.
Посоветуйте как это делать)
Спасибо.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
2

примерно так

 Item {

 ...

 // мои проперти

 property point pointDrag
    property bool caught: false
    property var component
    property var sprite
    property int currentIndex
    property var dragtarget
    property bool isCanCreateObject: true

    MouseArea {
        id: mouseArea
        anchors.fill: submain
        drag.target: dragtarget
        hoverEnabled: true
        pressAndHoldInterval: 300
        onEntered: {
            mouseArea.cursorShape = Qt.CrossCursor
        }
        onExited: {
            mouseArea.cursorShape = Qt.ArrowCursor
        }
        onPressed: {
            main.pointDrag = Qt.point(main.x, main.y)
        }

        // sprite.destroy(spriteIndex)
        onDoubleClicked:{
            if(spriteIndex > 0) {
                objectsFrame.children[spriteIndex].destroy()
                spriteIndex --
            }

        }
        onPressAndHold: {
            if(isCanCreateObject) {
                component = Qt.createComponent("ModemObject.qml");
                sprite = component.createObject(objectsFrame);
                spriteIndex++
                sprite.x = mouseX; sprite.y = mouseY;
                sprite.currentIndex = spriteIndex
                console.log("index obj "+ spriteIndex)
                sprite.dragtarget = sprite  // доступ к проперти созданного обьекта
                sprite.isCanCreateObject = false
                sprite.z = parent.z
            }
        }
    }

Добрый день.
И как это решает мою проблему?)

Item
{
    id: root

    property var  model
    property bool headers : false
    property string objectName

    property int iMaxWidthRow: 0
    property int iTempWidthRow: 0

    Component.onCompleted: {
        if(headers)
        {
//            var component = Qt.createComponent("qrc:/Modules/Header.qml");

//            if (component.status === Component.Ready)
//            {
//                component.createObject(parent);
//            }

            Header.model = model
        }


    }

    Rectangle
    {
        id: header

        anchors.top: parent.top
        anchors.left: parent.left
        anchors.right: parent.right
        height: visible ? 35 : 0
        visible: root.headers
        enabled: !root.headers

        color: "transparent"

        Row
        {
            id: rowHeader

            anchors.top: parent.top
            anchors.left: parent.left
            anchors.right: parent.right

            Repeater
            {
                id: headerRepeater

//                model: root.model.headerModel 

                Rectangle
                {
                    id: rectHeader

                    color: "transparent"
                    width: root.model.getSizeLongString(model.index)
                    height: 22
                    anchors.verticalCenter: parent.verticalCenter

                    Text
                    {
                        width: 50
                        height: 35

                        anchors.fill: parent
                        anchors.leftMargin: 10
                        anchors.rightMargin: 10
                        font.pixelSize: 12
                        verticalAlignment: Text.AlignVCenter
                        color: "#EAEAEA"

                        text: root.model.headerData(modelData, Qt.Horizontal, "display")
                    }
                }
            }
        }

        Rectangle
        {
            id: borderine

            anchors.top: rowHeader.bottom
            anchors.left: parent.left
            anchors.right: parent.right
//            anchors.bottom: parent.bottom

            height: header.height * 0.1
//            color: "#2C3033"
            color: "red"
        }
    }

Проблема которую я пытаюсь решить выше. Отьект id: header это тот обьект который я думаю создавать динамически. То есть еали прилетает проперти headers то он создается. Ему я передаю другие проперти. Проблема в том что этот обьект имеет такую строку

model: root.model.headerModel

и для одних моделей такая переменная есть а для других нету. И я решил что весь обьект лучше создавать.
Других вариантов решения проблемы я не нашел.
Попытался через такой способ сделать

    onHeadersChanged: {
        if(headers)
        {
            headerRepeater.model = root.model.headerModel
        }
    }

Вроде и логичный вариант, но почему то в одном месте этот обьект создается а в другом нет. А раньше все норм было.

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Timeweb

Let me recommend you the excellent hosting on which EVILEG is located.

For many years, Timeweb has been proving his stability.

For projects on Django I recommend VDS hosting

View Hosting
C

C++ - Test 005. Structures and Classes

  • Result:75points,
  • Rating points2
AE

C++ - Test 005. Structures and Classes

  • Result:25points,
  • Rating points-10
m

C++ - Тест 003. Условия и циклы

  • Result:28points,
  • Rating points-10
Last comments
AB

Qt/C++ - Lesson 008. QDataWidgetMapper - Working with the database via a widget

Понял сам так - происходит через setTable() "Sets the database table on which the model operates to tableName. Does not select data from the table, but fetches its field information", а затем че…
AB

Qt/C++ - Lesson 008. QDataWidgetMapper - Working with the database via a widget

Начал делать что-то похожее, но без sql. Не очень понимаю, что делает mapper->setCurrentModelIndex(model->index(row,0)); Вернее не понимаю вот что: откуда он берёт данные, кот…
IV

Qt/C++ - Lesson 048. QThread — How to work with threads using moveToThread

Не получается сделать connect, получаю гору ошибок. В чем может быть дело ?
IV

Qt/C++ - Lesson 034. Echo Server based on QTcpServer

Добрый день, разрешите вопрос: во всех примерах работы с QTcpServer его всегда создают в main.cpp, нет ли возможности корректно сохдать его в MainWindow.cpp ? Просто если перенести код…
D

Django - Tutorial 001. Deploying a site on Django + PostgreSQL + Gunicorn + Nginx

А почему нельзя? Где можно об этом почитать? Киньте, пожалуйста, в меня ссылкой.
Now discuss on the forum

Отправка картинки в DRF

Да я знаю ;-) используйте, пожалуйста, в следующий раз средства сайта. В данном случае сторонний сервис ни к месту.
  • BlinCT
  • April 9, 2021, 8:15 a.m.

Работа с созданным обьектом qml через Qt.createComponent

Добрый день. И как это решает мою проблему?) Item{ id: root property var model property bool headers : false property string objectName property int iMaxWidthRow:…

Проект на cmake и QCharts

Кто-нибудь сталкивался с проблемой скроллинша чарта ? если допустим увеличить в ширину сам чарт, как скроолить весь чарт а не только его видимую часть ?

Ожидание ввода QLineEdit

Попробовал, крешится напрочь... Такое чуство что таймер не удаляется.... и к нему снова идет обращение....

QScrollArea dynamically add QCheckBoxes

Всё правильно. Это просто спамер, который отправился в вечный бан.
About
Services
© EVILEG 2015-2020
Recommend hosting TIMEWEB