dle*_*win 2 qt qlistview qfilesystemmodel
我正在使用带有QListview的QFileSystemModel来显示目录中的所有文件.我想过滤该模型以显示某些类别的文件,例如:
我目前的代码是:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
Filemodel = new QFileSystemModel(this) ;
Filemodel->setFilter( QDir::NoDotAndDotDot | QDir::Files ) ;
proxy_model = new QSortFilterProxyModel();
proxy_model ->setDynamicSortFilter(true);
proxy_model ->setSourceModel( Filemodel );
proxy_model ->setFilterKeyColumn(0);
ui->Filtered_tbView->setModel( proxy_model ) ;
}
Run Code Online (Sandbox Code Playgroud)
(......)
/* combobox event to select file type to filter */
void MainWindow::on_FSFilter_Combo_currentIndexChanged(int index)
{
proxy_model->setFilterWildcard("*.txt"); // just a simple example here
ui->Filtered_tbView->setModel( proxy_model ) ;
}
Run Code Online (Sandbox Code Playgroud)
当目录中存在所有类型的文件时,该代码不显示任何内容.
此外,我尝试过的东西对我来说并不好(指针可能对其他读者有用):
最简单的方法是使用QFileSystemModel::setNameFilters.
使用该属性,QFileSystemModel::nameFilterDisables您可以选择被禁用或隐藏的已过滤文件.
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
Filemodel = new QFileSystemModel(this) ;
Filemodel->setFilter( QDir::NoDotAndDotDot | QDir::Files ) ;
QStringList filters;
filters << "*.txt";
Filemodel.setNameFilters(filters);
Filemodel.setNameFilterDisables(false);
ui->Filtered_tbView->setModel( Filemodel ) ;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7563 次 |
| 最近记录: |