Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Error: Qt.createQmlObject(): failed to create object: Non-existent attached object

Error: Qt.createQmlObject(): failed to create object: Non-existent attached object

Scheduled Pinned Locked Moved Solved QML and Qt Quick
createobjectgridlayoutjavascriptcreateqmlobject
13 Posts 4 Posters 2.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Kyeiv

    @sierdzio said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

    • use Repeater in your GridLayout to create the items you need

    But Repeater supports only one Component as delegate. I want it to fill 2 columns of GridLayout with 2 Text delegates.

    Static grid that i am trying to make dynamic:

    GridLayout {
                                id: grid
                                columns: 2
    
                                Text { 
                                    text: "first text:"; 
                                    color: "white"; 
                                    horizontalAlignment: Text.AlignRight
                                    Layout.alignment: Qt.AlignRight
                                    }
                                Text { text: "text"; color: "white"}
                                Text { 
                                    text: "second text:"; 
                                    color: "white"; 
                                    horizontalAlignment: Text.AlignRight
                                    Layout.alignment: Qt.AlignRight
                                    }
                                Text { text: "text text"; color: "white"}
                                Text { 
                                    text: "the third text:"; 
                                    color: "white"; 
                                    horizontalAlignment: Text.AlignRight
                                    Layout.alignment: Qt.AlignRight
                                    }
                                Text { text: "text text text"; color: "white"}
                            }
    

    Its output:

                            first text: text
                           second text: text text
                        the third text: text text text
    
    jeremy_kJ Offline
    jeremy_kJ Offline
    jeremy_k
    wrote on last edited by
    #4

    @Kyeiv said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

    @sierdzio said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

    • use Repeater in your GridLayout to create the items you need

    But Repeater supports only one Component as delegate. I want it to fill 2 columns of GridLayout with 2 Text delegates.

    Wrap the 2 delegates in a single component and use the index property to decide which to use for each cell.

    Asking a question about code? http://eel.is/iso-c++/testcase/

    K 1 Reply Last reply
    0
    • jeremy_kJ jeremy_k

      @Kyeiv said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

      @sierdzio said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

      • use Repeater in your GridLayout to create the items you need

      But Repeater supports only one Component as delegate. I want it to fill 2 columns of GridLayout with 2 Text delegates.

      Wrap the 2 delegates in a single component and use the index property to decide which to use for each cell.

      K Offline
      K Offline
      Kyeiv
      wrote on last edited by
      #5

      @jeremy_k I am not sure how to achieve it, can you provide some sample code?

      1 Reply Last reply
      0
      • jeremy_kJ Offline
        jeremy_kJ Offline
        jeremy_k
        wrote on last edited by
        #6
        GridLayout {
            columns: 2
            Repeater {
                model: 10
                delegate: Text {
                        text: index % 2 == 0 ? "text " + index : "text" * index
                }
            }
        }
        

        For more complicated or external delegates, substitute DelegateChooser or Loader for the Text item.

        Asking a question about code? http://eel.is/iso-c++/testcase/

        K 1 Reply Last reply
        0
        • jeremy_kJ jeremy_k
          GridLayout {
              columns: 2
              Repeater {
                  model: 10
                  delegate: Text {
                          text: index % 2 == 0 ? "text " + index : "text" * index
                  }
              }
          }
          

          For more complicated or external delegates, substitute DelegateChooser or Loader for the Text item.

          K Offline
          K Offline
          Kyeiv
          wrote on last edited by
          #7

          @jeremy_k But my model is in format of QVariantMap, for example:

          "key" : { "label": "first text"; "value": "text" }
          "key2" : { "label": "second text"; "value": "text text" }
          

          so i cannot see how to take advantage of indexes in here.

          jeremy_kJ 1 Reply Last reply
          0
          • K Kyeiv

            @jeremy_k But my model is in format of QVariantMap, for example:

            "key" : { "label": "first text"; "value": "text" }
            "key2" : { "label": "second text"; "value": "text text" }
            

            so i cannot see how to take advantage of indexes in here.

            jeremy_kJ Offline
            jeremy_kJ Offline
            jeremy_k
            wrote on last edited by jeremy_k
            #8

            @Kyeiv Use a model.

            Edit: QVariantMap might be directly usable as a model for a repeater as well. If so, index is available, as is modelData.

            Asking a question about code? http://eel.is/iso-c++/testcase/

            K 1 Reply Last reply
            0
            • jeremy_kJ jeremy_k

              @Kyeiv Use a model.

              Edit: QVariantMap might be directly usable as a model for a repeater as well. If so, index is available, as is modelData.

              K Offline
              K Offline
              Kyeiv
              wrote on last edited by Kyeiv
              #9

              @jeremy_k yes but still if so, i cannot take advantage of the index property when i use one object, let's say of index 1 to fill 2 Texts

              i need something like:

              GridLayout {
                  columns: 2
                  Repeater {
                      model: model.map
                      delegate: Text {
                              text: modelData.label
                              horizontalAlignment: Text.AlignRight
                              Layout.alignment: Qt.AlignRight
                      }
                     Text {
                              text: modelData.value
                      }
                  }
              }
              
              jeremy_kJ fcarneyF 2 Replies Last reply
              0
              • K Kyeiv

                @jeremy_k yes but still if so, i cannot take advantage of the index property when i use one object, let's say of index 1 to fill 2 Texts

                i need something like:

                GridLayout {
                    columns: 2
                    Repeater {
                        model: model.map
                        delegate: Text {
                                text: modelData.label
                                horizontalAlignment: Text.AlignRight
                                Layout.alignment: Qt.AlignRight
                        }
                       Text {
                                text: modelData.value
                        }
                    }
                }
                
                jeremy_kJ Offline
                jeremy_kJ Offline
                jeremy_k
                wrote on last edited by
                #10

                @Kyeiv You might be better off starting from a sketch or a description the use case. It looks like this is implementing the hard way, perhaps porting from a toolkit with a different structure.

                Asking a question about code? http://eel.is/iso-c++/testcase/

                K 1 Reply Last reply
                0
                • jeremy_kJ jeremy_k

                  @Kyeiv You might be better off starting from a sketch or a description the use case. It looks like this is implementing the hard way, perhaps porting from a toolkit with a different structure.

                  K Offline
                  K Offline
                  Kyeiv
                  wrote on last edited by
                  #11

                  @jeremy_k
                  what i have: a map of objects which have 2 attributes - label and value.
                  what i want to achieve: the formatted list of them in form of:

                                          first label text: value text
                                         second label text: value text
                                      the third label text: its value text
                  
                  

                  so its centered, the " : " in the middle.

                  1 Reply Last reply
                  0
                  • K Kyeiv

                    @jeremy_k yes but still if so, i cannot take advantage of the index property when i use one object, let's say of index 1 to fill 2 Texts

                    i need something like:

                    GridLayout {
                        columns: 2
                        Repeater {
                            model: model.map
                            delegate: Text {
                                    text: modelData.label
                                    horizontalAlignment: Text.AlignRight
                                    Layout.alignment: Qt.AlignRight
                            }
                           Text {
                                    text: modelData.value
                            }
                        }
                    }
                    
                    fcarneyF Offline
                    fcarneyF Offline
                    fcarney
                    wrote on last edited by
                    #12

                    @Kyeiv said in Error: Qt.createQmlObject(): failed to create object: Non-existent attached object:

                    GridLayout {
                    columns: 2
                    Repeater {
                    model: model.map
                    delegate: Text {
                    text: modelData.label
                    horizontalAlignment: Text.AlignRight
                    Layout.alignment: Qt.AlignRight
                    }
                    Text {
                    text: modelData.value
                    }
                    }
                    }

                    Then just put them in one delegate item:

                    GridLayout {
                        columns: 2
                        Repeater {
                            model: model.map
                            delegate: Column {
                            Text {
                                    text: modelData.label
                                    horizontalAlignment: Text.AlignRight
                                    Layout.alignment: Qt.AlignRight
                            }
                           Text {
                                    text: modelData.value
                            }
                            }
                        }
                    }
                    

                    C++ is a perfectly valid school of magic.

                    1 Reply Last reply
                    0
                    • jeremy_kJ Offline
                      jeremy_kJ Offline
                      jeremy_k
                      wrote on last edited by
                      #13

                      A ListView appears to be a better match than the more complicated GridLayout and Repeater.

                      ListView {
                          delegate: Item {
                              width: ListView.view.width
                              height: childrenRect.height
                              Text {
                                  anchors.right: parent.horizontalCenter
                                  text: modelData.firstPart + ":"
                              }
                              Text {
                                  anchors.left: parent.horizontalCenter
                                  text: modelData.secondPart
                              }
                          }
                      }
                      

                      Asking a question about code? http://eel.is/iso-c++/testcase/

                      1 Reply Last reply
                      1

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved