Qlist of qlist



  • Hi everybody, I created qvariantlist of qvariantlist like this:
    @ QVariantList DP;
    DP<< 2 << 2300 << 400 << 14.5 << 17.62 << 0 << 0 << 0 << 80;

    QVariantList DC;
    DC<< 3 << 2700 << 35 << 0 << 21.6 << 21.6 << 0 << 2735 << 0;
    
    QVariantList dataList;
    dataList<< DP <<DC  ;@
    

    but my problem is that, when i return the size of the datalist (@qDebug() << dataList.size();@), qdebug shows the number 16, but I want to show 2, because i filled it up with two data :(



  • In your program third list is not declared properly. I think your idea is to create list of QVariantList. It should be something like the following. Try following.

    @ QList<QVariantList> dataList;
    dataList<<DP<<DC;
    qDebug() << dataList.size();@



  • thanks, it worked. but if i want to pass it to qml what do i do?



  • i use it: 
    

    @ QQuickView view;

    QQmlContext *myList = view.rootContext();
    myList->setContextProperty("myList", QVariant::fromValue(dataList));
    
    view.setSource(QUrl("Main.qml"));
    
    view.show();@
    

    but in qml i can't use it, for example @myList [0][0]@



  • Did you get a chance to look at QQmlListProperty ? This may help you.



  • is it possible to pass 2d list from c++ to qml ?
    when i used @QVariantList dataList;
    dataList<< DP <<DC ;@ instead of @QList<QVariantList> dataList;
    dataList<<DP<<DC;@ i could to pass it with that codes but in 1d list, for example myList [0] worked but now it doesn't work


  • Moderators

    Guys, read the docs.
    << operator for lists appends list elements, not the lists themselves. If you want to create a list of lists you need to explicitly create a variant from the list, eg.

    @
    //this appends DP and DC elements to dataList
    //size of dataList is size of DP + size of DC
    dataList << DP << DC;

    //this creates new variants of type "list" and puts them into dataList
    //size is 2
    dataList << QVariant(DP) << QVariant(DC);
    @

    Btw. QList<QVariantList> doesn't make sense. QVariantList is a typedef for QList<QVariant> so this gives QList<QList<QVariant>>, and what we want is QList<QVariant> where the inner QVariant holds another QList<QVariant>.



  • Thanks Chris. It is typedef as well. Based on this only I suggested him. It depends on the requirement on how to make list of list. I have used it where I wanted list of List only. Based on this only I suggested him to create QList of QVariantList. I don't want QList<Variant>.



  • thanks Chris and Dheerendra. i have done it.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.