Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
类似于iOS的QML应用程序启动器_Qml - Fatal编程技术网

类似于iOS的QML应用程序启动器

类似于iOS的QML应用程序启动器,qml,Qml,我正在尝试使用QtQuick\QML编写一个应用程序启动器,我希望用户体验类似于iOS,即拥有一个图标网格,可以通过动画过渡和捕捉到网格效果(如果图标被放置在中间位置)来重新排列图标,使图标移动到一边。我尝试过使用GridView和drag属性,但似乎无法让布局实现我想要的效果。使用QML实现此类应用的最佳方式是什么?我是QtQuick的新手,我觉得可能我缺少了一些基本的东西,这些东西会使这篇文章写起来相当容易\明显 要在网格中放置图标,可以使用网格视图: 浏览Qt Quick文档,您将了解如

我正在尝试使用QtQuick\QML编写一个应用程序启动器,我希望用户体验类似于iOS,即拥有一个图标网格,可以通过动画过渡和捕捉到网格效果(如果图标被放置在中间位置)来重新排列图标,使图标移动到一边。我尝试过使用GridView和drag属性,但似乎无法让布局实现我想要的效果。使用QML实现此类应用的最佳方式是什么?我是QtQuick的新手,我觉得可能我缺少了一些基本的东西,这些东西会使这篇文章写起来相当容易\明显

要在网格中放置图标,可以使用网格视图:


浏览Qt Quick文档,您将了解如何做到这一点。

这与实现图标网格没有直接关系,但我最近遇到了QML组件加载程序。这使您可以按需加载QML组件,对于选择图标后启动应用程序的代码可能很有用


我已经使诺基亚N9推出的外观和感觉Maemo 6,或也称为MeeGo。 这是类似的,我只是从上到下滚动图标,而你改变页面从左到右,反之亦然

我不知道这是最好的方法,但我就是这样做的图标管理器它缩小了,这只是给你一个想法-实际上它是相当大的:

您还可以在C++中编写自己的Manager实现,稍后在QML中使用它。 这就是它的样子:


我最近创建了一些与此有着遥远联系的东西,其想法是:创建一个带有捕捉的ListView。它的委托应该包含一个GridView。将所有应用程序分离为n元素块。那只是个想法

ListModel
{
    ListElement { apps: [app1, app2, ..., appn] }
    ListElement { apps: [app1, app2, ..., appn] }
    ....
    ListElement { apps: [app1, app2, ..., appk] }
}
然后使用此模型填充ListView,使用apps属性填充GridView。
我不知道您是否可以在这里提供拖放功能,但是

您能否更明确地说明您已经尝试过的内容?可能会显示一些代码?
ListModel
{
    ListElement { apps: [app1, app2, ..., appn] }
    ListElement { apps: [app1, app2, ..., appn] }
    ....
    ListElement { apps: [app1, app2, ..., appk] }
}