QTreeView按钮移动项目

时间:2013-09-06 15:30:23

标签: c++ qt

我正在使用带有QStandardItemModel的QTreeView,我正试图弄清楚如何使用按钮在树上上下移动项目。我可以拖放没问题,但我想做的是有一些与“向上移动”和“向下移动”功能相关的按钮。我只是无法找到关于这个问题的任何内容。模型对象似乎有一个“moveRow()”函数,但我找不到任何文档,所以我不确定它是否是我需要的。你可以给我指出正确方向的任何信息将非常感谢!

PS以下是我的QT Creator统计数据: Qt Creator 2.6.2 基于Qt 5.0.1(64位)

1 个答案:

答案 0 :(得分:3)

你的预感是正确的。 moveRow()是正确的呼叫功能。

要在一个父项中移动项目(毕竟它是一棵树),您需要moveRow(parent, index.row(), parent, index.row() + delta),其中delta设置为1或-1,具体取决于您是向下还是向上移动,分别

如果您想允许在父母之间移动项目,那么如果项目将移动到其父项之外,您将需要额外的逻辑来确定目标父项。

请注意,如果移动按钮与要移动的项目分开,则认为设计不合理。您的代理人应在其行中显示每个项目的向上和向下箭头,以便您只需单击一下即可移动内容。当存在连续选择时,代表应合并上/下箭头以覆盖所有项目。当选择不连续时,向上/向下箭头应该消失。

使用单独的按钮,您需要两次点击:首先选择项目,然后单击向上/向下。从用户体验的角度来看,糟透了