In case anyone's interested, I found an alternative method using QSortFilterProxyModel!
Created a class based on the proxy model
header:
{
Q_OBJECT
public:
QHostProxyModel
(QObject *parent
= 0);
{ mFilterList = filter; };
protected:
virtual bool filterAcceptsRow(int source_row,
private:
};
class QHostProxyModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
QHostProxyModel(QObject *parent = 0);
inline void setFilterList(const QStringList &filter)
{ mFilterList = filter; };
protected:
virtual bool filterAcceptsRow(int source_row,
const QModelIndex &source_parent) const;
private:
QStringList mFilterList;
};
To copy to clipboard, switch view to plain text mode
source:
QHostProxyModel
::QHostProxyModel(QObject *parent
), mFilterList()
{
}
bool QHostProxyModel::filterAcceptsRow(int source_row,
{
QModelIndex index
= pSourceModel
->index
(source_row,
0, source_parent
);
if( pSourceModel->isDir(index) )
{
return TRUE;
}
if( mFilterList.count() == 0 )
{
return TRUE;
}
foreach( filterIndex, mFilterList )
{
data(index).toString().right(filterIndex.length()).toLower();
if( fileType == filterIndex )
{
return TRUE;
}
}
return FALSE;
}
QHostProxyModel::QHostProxyModel(QObject *parent)
: QSortFilterProxyModel(parent)
, mFilterList()
{
}
bool QHostProxyModel::filterAcceptsRow(int source_row,
const QModelIndex &source_parent) const
{
QDirModel *pSourceModel = (QDirModel *)sourceModel();
QModelIndex index = pSourceModel->index(source_row, 0, source_parent);
if( pSourceModel->isDir(index) )
{
return TRUE;
}
if( mFilterList.count() == 0 )
{
return TRUE;
}
QString filterIndex;
foreach( filterIndex, mFilterList )
{
QString fileType = pSourceModel->
data(index).toString().right(filterIndex.length()).toLower();
if( fileType == filterIndex )
{
return TRUE;
}
}
return FALSE;
}
To copy to clipboard, switch view to plain text mode
Then created the model/view using:
mpHostProxyModel = new QHostProxyModel(this);
mpHostProxyModel
->setFilterList
(QStringList() <<
".jpg");
mpHostProxyModel->setSourceModel(mpHostPathModel);
ui.mpHostDriveView->setModel(mpHostProxyModel);
mpHostPathModel = new QDirModel;
mpHostProxyModel = new QHostProxyModel(this);
mpHostProxyModel->setFilterList(QStringList() << ".jpg");
mpHostProxyModel->setSourceModel(mpHostPathModel);
ui.mpHostDriveView->setModel(mpHostProxyModel);
To copy to clipboard, switch view to plain text mode
Hope that helps anyone with similar problems,
Andy.
Bookmarks