我尝试从Qt创建一个QTreeView作为示例
http://doc.qt.io/qt-5/qtwidgets-itemviews-editabletreemodel-example.html
当我们单击每个“父”项之前的三角形时,将显示“子项”。
就我而言,我将此行添加到树状视图
myTreeView->setRootIsDecorated(false);
结果,每个“父”项之前都没有三角形。
但是“子项”项也不再显示。
我的要求是:
我该怎么办?
答案 0 :(得分:1)
根据注释,您可以通过调用QTreeView::expandAll
...
myTreeView->expandAll();
请注意,当将子项添加到模型时,可能需要再次调用它,这取决于模型的大小,可能会成为性能瓶颈。
或者,最好从QTreeView
继承并覆盖QTreeView::rowsInserted
成员。
virtual void MyTreeView::rowsInserted (const QModelIndex &parent, int start, int end) override
{
/*
* Let the base class do what it has to.
*/
QTreeView::rowsInserted(parent, start, end);
/*
* Make sure the parent model index is expanded. If it already
* is expanded then the following should just be a noop.
*/
expand(parent);
}
这应该为大型模型提供更好的性能。