gpt4 book ai didi

c++ - QListview, QTreeview 是正确的以列表方式显示文件

转载 作者:行者123 更新时间:2023-11-30 04:35:15 28 4
gpt4 key购买 nike

我喜欢在列表中显示文件,就像在 Windows 资源管理器或任何其他带有 Qt 的文件管理器中一样。使用 QFilesystemModel 和 QListView 没有问题,但是没有像大小或最后修改日期这样的列。接下来,我尝试使用 QTreeView,现在已经有了列,但不幸的是,每次文件夹展开时都会移动到文件系统中,而不是像文件管理器那样,只显示实际文件夹的内容。

我怎样才能拥有列和 ListView 样式的导航?

感谢您的回答。

最佳答案

如果我没理解错的话,您想要多列(QListView 不支持),但是没有子文件夹内容的平面列表?这对我有用,在 OS X 上测试过:它使用 setRootIndex 来隐藏根文件夹(在本例中为“/”)和代理模型来过滤根节点的子节点的所有子节点。

#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>
#include <QSortFilterProxyModel>

class Proxy : public QSortFilterProxyModel {
public:
explicit Proxy( QObject* parent=0 ) : QSortFilterProxyModel( parent ) {}
bool filterAcceptsRow( int, const QModelIndex& parent ) const {
return !parent.parent().isValid();
}
};

int main( int argc, char** argv ) {
QApplication app( argc, argv );
QFileSystemModel model;
Proxy proxy;
proxy.setSourceModel( &model );
const QModelIndex rootIdx = proxy.mapFromSource( model.setRootPath( QLatin1String("/") ) );
QTreeView view;
view.setModel( &proxy );
view.setRootIndex( rootIdx );
view.setRootIsDecorated( false );
view.show();
return app.exec();
}

关于c++ - QListview, QTreeview 是正确的以列表方式显示文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5490113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com