如何在QTreeView顶部插入项目



在我的应用程序中,我想在QTreeView的顶部插入一个项目。

到目前为止,我将在当前所选项目的正上方插入一个项目。代码(我想是从EditableTreeviewDemo中截取的):

QModelIndex index = this->selectionModel()->currentIndex();
QAbstractItemModel *model = this->model();
if (!model->insertRow(index.row(), index.parent()))
    return;

我想我需要的是当前第一行的索引?我该怎么得到这个?

作为一个附带问题,当插入一行时,当前索引会发生什么?它是继续指向同一项还是同一行?

首先,您必须知道insertRow是来自QAbstractItemModel的函数,它将调用insertRows(带s)。如果要允许在模型中插入数据,则必须在模型子类中重新定义此函数。

http://doc.qt.io/qt-5/qabstractitemmodel.html#insertRows

还要考虑最顶层索引的任何父级都是无效的QModelIndex。那么要做的事情就是:

model->insertRow(0, QModelIndex());

因为这是第二个参数的默认值,所以只需调用:

model->insertRow(0);

然后,在您对insertRows的重新定义中,只需检查父索引的有效性,即可确保您的新闻基础数据创建在您希望的位置。

如果您有疑问,在模型中插入数据不会影响当前项和选定项。

相关内容

  • 没有找到相关文章

最新更新