QtQuick 1.1浮动矩形
我正在嵌入式Linux平台上使用QtQuick 1.1和Qt 4.8。我有一种桌面,动态创建的矩形排列在一个网格中——这个网格位于Flickable中QtQuick 1.1浮动矩形,qt,qml,qt-quick,qt4.8,Qt,Qml,Qt Quick,Qt4.8,我正在嵌入式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 ancho
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
}
}
看起来是这样的:
当我再创建两个项目时,我将它们推到网格的末尾,如下所示:
这是我目前的状态。但现在我需要在这个网格中获取类别,并且我需要能够将新项目推送到每个类别。应该是这样的:
将两个项目添加到红色类别后:
如何在网格中排列容器,使容器在每行末尾自动断开
解决方案:
GridView{
型号:myDesktopModel
委托:HomeLinkedDelegate{id:homeLinkDelegate}
}
QList对象列表代码>
列表可以(按颜色)排序
登记名单
viewer->rootContext()->setContextProperty(“myDesktopModel”,QVariant::fromValue(this->objectList))代码>
当列表被修改时,您必须再次注册它-GridView将刷新
有关GridView的更多信息:
关于基于QObjectList的模型的更多信息据我所知,您不能从QML中选择网格
中项目的位置。您最好使用并创建自己的自定义项,以便可以选择在模型中的正确索引处插入项。或者,正如@GrecKo所提到的,使用ListModel
并调用函数
如果您最终选择了qabstractemmodel
方法,请参阅以获取更多信息。据我所知,您无法从QML中选择网格中项目的位置。您最好使用并创建自己的自定义项,以便可以选择在模型中的正确索引处插入项。或者,正如@GrecKo所提到的,使用ListModel
并调用函数
如果您最终选择了qabstractemmodel
方法,请参阅以了解更多信息。似乎“应该看起来像”图像与您所说的想要自动断开的内容相矛盾。您的意思是希望某一颜色的最后一个项目在该行的最后一个,并且下一个颜色从新行开始?当一行中没有足够的空间时,应将相同颜色的项目分组-它应自动中断(n1之后的最后一张图片)。一行应始终包含4项(最后一行除外)您的问题是什么?你尝试了什么,结果如何?在我看来,您想要的是网格的正常行为,不需要额外的代码。我需要将网格按类别分开-这意味着当我想要添加红色项目时,它应该放在最后一个红色项目之后。当我得到一个绿色物品时,它应该放在最后一个绿色物品之后……看起来“应该看起来像”的图片与你所说的想要自动破碎的说法相矛盾。您的意思是希望某一颜色的最后一个项目在该行的最后一个,并且下一个颜色从新行开始?当一行中没有足够的空间时,应将相同颜色的项目分组-它应自动中断(n1之后的最后一张图片)。一行应始终包含4项(最后一行除外)您的问题是什么?你尝试了什么,结果如何?在我看来,您想要的是网格的正常行为,不需要额外的代码。我需要将网格按类别分开-这意味着当我想要添加红色项目时,它应该放在最后一个红色项目之后。当我得到一件绿色物品时,它应该放在最后一件绿色物品之后……这不是我需要它的方式。它会在每次gridOk后导致中断。。这很令人困惑。我已经更新了我的答案。一个带有模型的网格视图
,或者一个带有模型的网格
和一个中继器
。虽然这里的OP在代码< <代码> >代码> >可闪烁的< /COD> > GRIDVIEW似乎是要走的路。注意,这可以在不执行C++ +CalpQualTimeMedio>代码的情况下完成,在QML中一个简单的<代码> ListMeals/Cuff>已经足够了,调用了<代码> INSERT /COD>方法。无耻插件:你也可以使用<代码> ListModel < /C> >(或自定义C++模型),用My和排序颜色角色,这样你甚至不需要找出正确的位置来插入新元素,您可以将它追加到源模型中。使用“代码> GRIDVIEW/CODE >,它使用了C++ <代码> qList< /Cord>,它通过<代码>查看器> ROOTCONTEXTROR()-> SETCONTeXSTATECTON< /COD>注册。在获取新项目时,我对QList
进行排序,然后再次注册列表,这会导致重新加载GridView。这不是我需要的方式。它会在每次gridOk后导致中断。。这很令人困惑。我已经更新了我的答案。一个带有模型的网格视图
,或者一个带有模型的网格
和一个中继器
。虽然这里的OP在代码< <代码> >代码> >可闪烁的< /COD> > GRIDVIEW似乎是要走的路。注意,这可以在不执行C++ +CalpQualTimeMedio>代码的情况下完成,在QML中一个简单的<代码> ListMeals/Cuff>已经足够了,调用了<代码> INSERT /COD>方法。无耻插件:你也可以使用<代码> ListModel < /C> >(或自定义C++模型),用My和排序颜色角色,这样你甚至不需要找出正确的位置来插入新元素,您可以将它追加到源模型中。使用“代码> GRIDVIEW/CODE >,它使用了C++ <代码> qList< /Cord>,它通过<代码>查看器> ROOTCONTEXTROR()-> SETCONTeXSTATECTON< /COD>注册。在获取新项目时,我对QList
进行排序,并再次注册列表,这会导致重新加载GridView。