C++ 如何向QSortFilterProxyModel添加额外的行

C++ 如何向QSortFilterProxyModel添加额外的行,c++,qt,C++,Qt,您好,我有一个QTreeView的模型,我为这个小部件添加了QSortFilterProxyModel,隐藏了分支,因此a将有一个类似QListView但带有标题的QTreeView。所有这些都正常工作,现在我想添加新的额外行(在我的视图上显示,当单击此行时,我将向上移动到此节点的父节点).如何实现此行为:1)添加额外的行;2) 单击视图并向上移动到父节点并显示新节点。当我遇到同样的问题时,我设计了新的ProxyModel,其唯一目的是在代理源模型的前几行之后添加空行。然后您可以在视图和排序模型

您好,我有一个QTreeView的模型,我为这个小部件添加了QSortFilterProxyModel,隐藏了分支,因此a将有一个类似QListView但带有标题的QTreeView。所有这些都正常工作,现在我想添加新的额外行(在我的视图上显示,当单击此行时,我将向上移动到此节点的父节点).如何实现此行为:1)添加额外的行;2) 单击视图并向上移动到父节点并显示新节点。

当我遇到同样的问题时,我设计了新的ProxyModel,其唯一目的是在代理源模型的前几行之后添加空行。然后您可以在视图和排序模型之间插入此模型。

第二个问题的答案是:当捕捉到信号单击时,您可以执行如下操作:QTreeView*v=qobject_cast(sender());if(v){v->setRootIndex(index);}在此操作之后,QTreeView看起来像QListView(如果隐藏了分支)。第一个问题现在是开放的。您如何实现它?如何将数据复制到另一个代理模型?您不能为一个调用函数添加两行@TopilskiAlexandr,嗯,它并不是字面上的复制和插入。是代理模型,它接受源模型并表示其转换的数据。没有任何数据复制。我理解,但我在哪里创建新行,在哪里设置此行数据?@TopilskiAlexandr,在您的代理模型中。它只是声明它有sourcemodel+1行,当请求最后一行数据时,它是您的附加行数据。