QFileSystemModel只顯示名稱,不顯示size,type,modified
阿新 • • 發佈:2018-09-04
qtreeview comm font nco 效果 bsp parent eas const
Qt 提供的 QFileSystemModel可以提供文件目錄樹預覽功能,但是預覽的都自帶了Name,size,type, modified等信息。我現在只想顯示name這一列,不想顯示size,type,modified的信息。
解決辦法
辦法1:修改QFileSystemModel
寫一個子類,繼承自QFileSystemModel,然後在需要顯示size,type,modified的地方,把這些信息屏蔽掉。我知道Qt的Model顯示數據,主要是在data這個函數中,然後Model的列是通過columnCount這個函數返回的。所以我重寫columnCount函數,只返回一列,這一列就是我們想要的名稱。
#include <QtGui/QApplication>
#include <QFileSystemModel>
#include <QTreeView>
class MyFileSytemModel : public QFileSystemModel
{
public:
//第1列顯示名稱,其他幾列都屏蔽掉
int columnCount(const QModelIndex &parent) const
{
return 1;
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyFileSytemModel* model = new MyFileSytemModel;
model->setRootPath(QDir::currentPath());
QTreeView* treeView = new QTreeView;
treeView->setModel(model);
treeView->setRootIndex(model->index(QDir::currentPath()));
treeView->show();
return a.exec();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
最後,來個截圖。
辦法2:修改TreeView
如果我能把TreeView的第2,3,4列隱藏,也可以達到我想要的效果。結果還真被我發現了QTreeView中有個函數角setColumnHidden,使用這個函數即可。
#include <QtGui/QApplication>
#include <QFileSystemModel>
#include <QTreeView>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFileSystemModel* model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());
QTreeView* treeView = new QTreeView;
treeView->setModel(model);
treeView->setRootIndex(model->index(QDir::currentPath()));
treeView->show();
treeView->setColumnHidden(1, true);
treeView->setColumnHidden(2, true);
treeView->setColumnHidden(3, true);
return a.exec();
}
https://blog.csdn.net/snail_hunan/article/details/75250992
QFileSystemModel只顯示名稱,不顯示size,type,modified