16,211
社区成员
发帖
与我相关
我的任务
分享
class myDialog: public QDialog
{
public:
myDialog();
~myDialog();
private:
QDirModel *m_pDirModel;
};
myDialog::myDialog()
{
ui.setupUi(this);
m_pDirModel = new QDirModel( this );
ui.m_pTree->setModel( m_pDirModel );//ui是对话框资源,m_pTree是一个QTreeView
}
myDialog::~myDialog()
{
if (m_pDirModel)
delete m_pDirModel;
}
//头文件
#include <QStringList>
#include <QModelIndex>
#include <QDirModel>
#include <QtGui/QDialog>
#include "ui_ESSeUpLoadFileOpenDlg.h"
class ESSeUpLoadFileOpenDlg : public QDialog
{
Q_OBJECT
public:
ESSeUpLoadFileOpenDlg(QWidget *parent = 0, Qt::WFlags flags = 0);
~ESSeUpLoadFileOpenDlg();
QStringList GetSelectedFile();
QStringList GetSelectedDir();
QString GetRememberPath();
private:
Ui::ESSeUpLoadFileOpenDlgClass ui;
QDirModel *m_pDirModel;
QDirModel *m_pDirModelLst;
QStringList m_lstSelectedFile;
QStringList m_lstSelectedDir;
private slots:
void OnTreeClicked( const QModelIndex & index );
void OnOK();
void OnCancel();
};
//源文件
ESSeUpLoadFileOpenDlg::ESSeUpLoadFileOpenDlg(QString qsRememberPath,QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
ui.setupUi(this);
m_pDirModel = NULL;
m_pDirModelLst = NULL;
m_qsRememberPath = qsRememberPath;
m_pDirModel = new QDirModel( this );
m_pDirModel->setSorting(QDir::DirsFirst | QDir::IgnoreCase);
m_pDirModelLst = new QDirModel( this );
m_pDirModelLst->setSorting(QDir::DirsFirst | QDir::IgnoreCase);
QList< int > lstSize;
lstSize << 350 << 401;
ui.m_pSplitter->setSizes( lstSize );
ui.m_pSplitter->setCollapsible( 0, false );
ui.m_pSplitter->setCollapsible( 1, false );
ui.m_pLst->setModel( m_pDirModelLst );
ui.m_pLst->setRootIndex( m_pDirModelLst->index( qsRememberPath ) );
ui.m_pLst->setSelectionMode( QAbstractItemView::ExtendedSelection );
m_pDirModel->setFilter( QDir::Dirs | QDir::NoDotAndDotDot );
ui.m_pTree->setModel( m_pDirModel );
ui.m_pTree->setCurrentIndex(m_pDirModel->index(qsRememberPath));
ui.m_pTree->hideColumn( 1 );
ui.m_pTree->hideColumn( 2 );
ui.m_pTree->hideColumn( 3 );
QHeaderView *pHeader = ui.m_pTree->header();
pHeader->setVisible( false );
connect( ui.m_pBtnOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
connect( ui.m_pBtnCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
connect( ui.m_pTree, SIGNAL( clicked ( const QModelIndex ) ), this, SLOT( OnTreeClicked( const QModelIndex ) ) );
}
ESSeUpLoadFileOpenDlg::~ESSeUpLoadFileOpenDlg()
{
if (m_pDirModel)
{
delete m_pDirModel;
}
if (m_pDirModelLst)
{
delete m_pDirModelLst;
}
}
void ESSeUpLoadFileOpenDlg::OnTreeClicked(const QModelIndex &index)
{
QFileInfo info = m_pDirModel->fileInfo( index );
QString qsPath = info.filePath();
ui.m_pLst->setRootIndex( m_pDirModelLst->index( qsPath ) );
}
void ESSeUpLoadFileOpenDlg::OnOK()
{
QModelIndexList lstIndex = ui.m_pLst->GetSelectedIndexes();
QModelIndex index;
QString qsTemp;
m_lstSelectedFile.clear();
for( int i = 0; i < lstIndex.size(); i++ )
{
index = lstIndex.at( i );
QFileInfo info = m_pDirModelLst->fileInfo( index );
if( info.isFile() )
{
qsTemp = info.filePath();
m_lstSelectedFile.append( qsTemp );
}
else if( info.isDir() )
{
qsTemp = info.filePath();
m_lstSelectedDir.append( qsTemp );
}
}
QDialog::accept();
}
void ESSeUpLoadFileOpenDlg::OnCancel()
{
QDialog::reject();
}