[英]Filtering ListView & QFileSystemModel Qt
我在過濾QFileSystemModel時遇到了一個奇怪的問題
在“ dialog.ui”中,只有一個QListView。
main.cpp
#include "dialog.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
return a.exec();
}
對話框
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QtCore>
#include <QtGui>
#include <QFileSystemModel>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
QFileSystemModel* fileModel;
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
fileModel = new QFileSystemModel(this);
fileModel->setFilter(QDir::Files);
ui->listView->setModel(fileModel);
ui->listView->setRootIndex(fileModel->setRootPath("/"));
////////////////////////////////// - Problem!
fileModel->setRootPath("/home/");
fileModel->setRootPath("/");
//////////////////////////////////
}
Dialog::~Dialog()
{
delete ui;
}
問題是,盡管過濾設置為QDir::Files
,但我在列表中看到“ home”文件夾(僅此文件夾)。 如何刪除此項?
如果您希望文件瀏覽器的樹視圖顯示文件夾,列表視圖顯示文件,請將QListView更改為QTreeView,使用以下可移植的構造函數代碼:
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
fileModel = new QFileSystemModel(this);
fileModel->setFilter(QDir::Files);
ui->treeView->setModel(fileModel);
auto myhome = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
////////////////////////////////// - Problem!
ui->treeView->setRootIndex(fileModel->setRootPath(myhome));
ui->treeView->setRootIndex(fileModel->setRootPath("/"));
//////////////////////////////////
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.