Russian Qt Forum
Ноябрь 24, 2024, 09:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите установить фильтр в QDirModel на определенный формат файлов..  (Прочитано 3304 раз)
BaHeK
Гость
« : Апрель 22, 2010, 00:21 »

Для начала хочу сказать, что я в Qt вообще еще ничего не писал... Вот задали курсач, прочитал книгу, но опыта как такового нету... прошу помощи... В общем суть такая... Мне нужно сделать, чтобы в одной части виджета отображалось дерево каталогов и при нажатии на элемент дерева, в нижней части отображались, скажем, файлы графического формата... читал про QSortFilterProxyModel, пробовал, но все никак... вот что пишу... помогите...

    m_ptrDirModel = new QDirModel;

    m_ptrDockRightPanel = new QDockWidget;
    m_ptrTabWidgetRightDock = new QTabWidget;

    m_ptrAudioFilterModel = new QSortFilterProxyModel;
    m_ptrAudioFilterModel->setSourceModel(m_ptrDirModel); // Сделал так, потому что когда связываешь две разные модели, то setRootIndex(..) ругается... тут тоже помощи попросил бы... как сделать, чтобы обмениваться, чтоль, индексами между разными моделями, и возможно ли такое....?

    m_ptrTreeView = new QTreeView;
    m_ptrTreeView->setModel(m_ptrAudioFilterModel);

    m_ptrListView = new QListView;
    m_ptrListView->setModel(m_ptrAudioFilterModel);
    connect(m_ptrTreeView,SIGNAL(clicked(QModelIndex)),m_ptrListView,SLOT(setRootIndex(QModelIndex)));
    connect(m_ptrTreeView,SIGNAL(clicked(QModelIndex)),this,SLOT(slotSetAudioFilter()));

    QPushButton *pCmdGoToRoot = new QPushButton("Root");
    connect(pCmdGoToRoot,SIGNAL(clicked()),this,SLOT(slotSetRoot()));
//Как реализовать слот slotSetRoot(), тоесть просто установить дерево в начало... и естесственно чтобы список с поддерживаемыми графическими, в данном случае, файлами отображал содержимое текущего каталога..

    QVBoxLayout *pVBoxLayout = new QVBoxLayout;
    pVBoxLayout->addWidget(pCmdGoToRoot);
    pVBoxLayout->addWidget(m_ptrTreeView);
    pVBoxLayout->addWidget(m_ptrListView);

    QWidget *pWgt = new QWidget;
    pWgt->setLayout(pVBoxLayout);
    m_ptrTabWidgetRightDock->addTab(pWgt,QIcon("ico/Audio.ico"),"Audio");

    m_ptrTabWidgetRightDock->addTab(new QLabel("Video",this),QIcon("ico/Video.ico"),"Video");
    m_ptrTabWidgetRightDock->addTab(new QLabel("Images",this),QIcon("ico/Pic.ico"),"Images");

    m_ptrTabWidgetRightDock->setFixedWidth(220);
    m_ptrDockRightPanel->setWidget(m_ptrTabWidgetRightDock);
    addDockWidget(Qt::LeftDockWidgetArea,m_ptrDockRightPanel);

Записан
alexman
Гость
« Ответ #1 : Апрель 22, 2010, 08:34 »

void QDirModel::setFilter ( QDir::Filters filters )
void QDirModel::setNameFilters ( const QStringList & filters )

Попробуй так (сам я не пробовал):
QStringList filter;
filter.append( "*.png" );
filter.append( "*.xpm" );
filter.append( "*.jpg" );

model->setNameFilter( filter );
Записан
BaHeK
Гость
« Ответ #2 : Апрель 22, 2010, 17:25 »

Спасибо, чуть позже проверю...  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 21.