Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QtQuick 1.1浮动矩形_Qt_Qml_Qt Quick_Qt4.8 - Fatal编程技术网

QtQuick 1.1浮动矩形

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

我正在嵌入式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
  }
}
看起来是这样的:

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

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

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

如何在网格中排列容器,使容器在每行末尾自动断开

解决方案:

  • 使用GridView
  • GridView{
    型号:myDesktopModel
    委托:HomeLinkedDelegate{id:homeLinkDelegate}
    }

  • 用c语言定义列表++
  • 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。