QtQuick 1.1浮动矩形

时间:2016-07-14 15:04:09

标签: qt qml qt-quick qt4.8

我在嵌入式Linux Plattform上使用QtQuick 1.1和Qt 4.8。我有一些桌面,其中动态创建的矩形排列在网格中 - 此网格位于Flickable内。

Flickable{
  anchors.fill: parent
  contentHeight: homegrid.height
  flickableDirection: Flickable.VerticalFlick
  clip:true
  Grid{
     anchors.left: parent.left
     anchors.top: parent.top
     columns: 4
     flow: GridView.LeftToRight
     id: homegrid
     //new items get pushed to this grid
  }
}

看起来像这样:

enter image description here

当我再创建2个项目时,我将它们推到网格的末尾,如下所示:

enter image description here

Taht是我现在的状态。但现在我需要在这个网格中获取类别,我需要能够将新项目推送到每个类别。应该是这样的:

enter image description here

将两个项目添加到红色类别后:

enter image description here

如何在网格中安排容器,容器会在每行末尾自动断开?

解决方案:

  1. 使用GridView
  2. GridView{ model: myDesktopModel delegate: HomeLinkeDelegate { id: homeLinkDelegate } }

    1. 在c ++中定义列表
    2. QList<QObject*> objectList;

      可以对列表进行排序(按颜色)。

      1. 注册列表
      2. viewer->rootContext()->setContextProperty("myDesktopModel",QVariant::fromValue(this->objectList));

        修改List后,您必须再次注册 - 而不是GridView刷新。

        有关GridView的更多信息:http://doc.qt.io/qt-4.8/qml-gridview.html#model-prop

        有关基于QObjectList的模型http://doc.qt.io/qt-4.8/qdeclarativemodels.html#qobjectlist-based-model

        的更多信息

1 个答案:

答案 0 :(得分:3)

据我所知,您无法从QML中选择Grid项目的位置。您最好使用GridView并创建自己的自定义QAbstractItemModel,以便您可以选择在模型中的正确索引处插入项目。或者,正如@GrecKo所提到的,使用ListModel并调用insert()函数。

如果您最终选择了QAbstractItemModel方法,请参阅Using C++ Models with Qt Quick Views了解详情。