是否可以在QListView中显示复杂的小部件?

时间:2014-10-09 11:41:17

标签: qt qlistview qitemdelegate qabstractlistmodel

我想创建一个自定义小部件,它可以显示系统中每个驱动器中的文件。 这是布局:

QListView的每一行都包含一个标题栏(QLabel)和一个QListWidget,其中包含许多代表文件的图标。

我知道如何使用QItemDelegate自定义QListView的外观,但我不知道如何创建这样一个复杂的小部件。

有人可以帮助我吗?非常感谢你阅读这篇文章。

1 个答案:

答案 0 :(得分:0)

我认为QFileSystemModel非常接近您正在寻找的最终解决方案:

http://qt-project.org/doc/qt-5/QFileSystemModel.html#details

model = new QFileSystemModel();
QModelIndex mindex = model->setRootPath(QDir::homePath());
QTreeView * tree = ui->treeView;
tree->setModel(model);
tree->setRootIndex(mindex);

// Demonstrating look and feel features
tree->setAnimated(true);
tree->setIndentation(20);
tree->setSortingEnabled(true);
tree->setAlternatingRowColors(true);

在Qt中还有一个内置的示例,用于文件树的复杂XML视图。

http://qt-project.org/doc/qt-5.0/qtxmlpatterns/xmlpatterns-filetree.html

就使用Model / Delegate编程的高级示例而言,以下是我可以找到的资源:

http://qt-project.org/doc/qt-5/model-view-programming.html

http://qt-project.org/doc/qt-5/model-view-programming.html#related-examples

代码片段的其他位置在使用模型和委托类的抽象类的详细信息中。例如:

http://qt-project.org/doc/qt-5/qabstractitemdelegate.html#details

希望有所帮助。