QtQuick 1.1 浮动矩形
QtQuick 1.1 Floating Rectangles
我在嵌入式 Linux 平台上使用 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
}
}
看起来像这样:
当我再创建 2 个项目时,我将它们推到网格的末尾,如下所示:
这就是我目前的状态。但是现在我需要在这个网格中获取类别,并且我需要能够将新项目推送到每个类别。应该看起来像:
并且在将两个项目添加到红色类别之后:
如何在网格中排列容器,使容器在每一行的末尾自动断开?
解法:
- 使用 GridView
GridView{
model: myDesktopModel
delegate: HomeLinkeDelegate { id: homeLinkDelegate }
}
- 在 C++ 中定义列表
QList<QObject*> objectList;
列表可以排序(按颜色)。
- 注册列表
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
据我所知,您无法从 QML 选择 Grid
中项目的位置。你最好使用 GridView
and creating your own custom QAbstractItemModel
so that you can choose insert the items at the correct index in the model. Or, as @GrecKo mentioned, use a ListModel
and call the insert()
函数。
如果您最终选择 QAbstractItemModel
方法,请参阅 Using C++ Models with Qt Quick Views 了解更多信息。
我在嵌入式 Linux 平台上使用 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
}
}
看起来像这样:
当我再创建 2 个项目时,我将它们推到网格的末尾,如下所示:
这就是我目前的状态。但是现在我需要在这个网格中获取类别,并且我需要能够将新项目推送到每个类别。应该看起来像:
并且在将两个项目添加到红色类别之后:
如何在网格中排列容器,使容器在每一行的末尾自动断开?
解法:
- 使用 GridView
GridView{
model: myDesktopModel
delegate: HomeLinkeDelegate { id: homeLinkDelegate }
}
- 在 C++ 中定义列表
QList<QObject*> objectList;
列表可以排序(按颜色)。
- 注册列表
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
据我所知,您无法从 QML 选择 Grid
中项目的位置。你最好使用 GridView
and creating your own custom QAbstractItemModel
so that you can choose insert the items at the correct index in the model. Or, as @GrecKo mentioned, use a ListModel
and call the insert()
函数。
如果您最终选择 QAbstractItemModel
方法,请参阅 Using C++ Models with Qt Quick Views 了解更多信息。