QListWidget使用整理

来源:互联网 发布:手机上怎么看淘宝分销 编辑:程序博客网 时间:2024/05/19 16:36

1.效果图
这里写图片描述

2.源代码
fileview.h

#ifndef FILEVIEW_H#define FILEVIEW_H#include <QDialog>#include <QLineEdit>#include <QListWidget>#include <QVBoxLayout>#include <QDir>#include <QListWidgetItem>#include <QFileInfoList>class FileView : public QDialog{    Q_OBJECTpublic:    FileView(QWidget *parent = 0,Qt::WindowFlags f=0);    ~FileView();        void showFileInfoList(QFileInfoList list);//将目录内容显示在QListWidget列表中public slots:    void slotShow(QDir dir);//当目录改变时改变QListWidget中的内容    void slotDirShow(QListWidgetItem * item);//当目录改变时改变lineedit中的目录路径private:    QLineEdit *fileLineEdit;//目录路径    QListWidget *fileListWidget;//目录列表    QVBoxLayout *mainLayout;//布局};#endif // FILEVIEW_H

fileview.cpp

#include "fileview.h"#include <QStringList>#include <QIcon>FileView::FileView(QWidget *parent,Qt::WindowFlags f)    : QDialog(parent,f){    setWindowTitle(tr("File View"));    fileLineEdit = new QLineEdit(tr("/"));    fileListWidget = new QListWidget;    mainLayout = new QVBoxLayout(this);    mainLayout->addWidget(fileLineEdit);    mainLayout->addWidget(fileListWidget);    connect(fileLineEdit,SIGNAL(returnPressed()),this,SLOT(slotShow(QDir)));    connect(fileListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(slotDirShow(QListWidgetItem*)));    QString root = "/";//程序所在根目录    QDir rootDir(root);    QStringList string;    string << "*";    QFileInfoList list=rootDir.entryInfoList(string);    showFileInfoList(list);}FileView::~FileView(){}void FileView::slotShow(QDir dir){    QStringList string;    string<<"*";    QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst);    showFileInfoList(list);}void FileView::showFileInfoList(QFileInfoList list){    fileListWidget->clear();    for(unsigned int i=0;i<list.count();i++)    {        QFileInfo tmpFileInfo=list.at(i);        if(tmpFileInfo.isDir())        {            QIcon icon("dir.png");            QString fileName = tmpFileInfo.fileName();            QListWidgetItem *tmp = new QListWidgetItem(icon,fileName);            fileListWidget->addItem(tmp);        }        else if(tmpFileInfo.isFile())        {            QIcon icon("file.png");            QString fileName=tmpFileInfo.fileName();            QListWidgetItem *tmp = new QListWidgetItem(icon,fileName);            fileListWidget->addItem(tmp);        }    }}void FileView::slotDirShow(QListWidgetItem * item){    QString str=item->text();    QDir dir;    dir.setPath(fileLineEdit->text());    dir.cd(str);    fileLineEdit->setText(dir.absolutePath());    slotShow(dir);}
原创粉丝点击