QListWidget使用,文件列表

在这里插入图片描述
在这里插入图片描述
源码点此

以上只是读取路径中的文件,将文件用列表方式显示出,打开文件等对文件操作可根据自己需求添加

#include "fileopendlg.h"
#include <QPainter>
#include <QMessageBox>

FileOpenDlg::FileOpenDlg(QWidget *parent) :
    QWidget(parent)
{
    DisW = 640;
    DisH = 480;
    this->setFixedSize(DisW, DisH);
    SetBk();
    this->setWindowTitle("文件打开(File Open)");
    this->move(0,0);

    m_textFont.setPixelSize(20);
    m_textFont.setFamily("wqy-zenhei");
    m_textFont.setWeight(1);

    m_ListWidget = new QListWidget(this);
    m_ListWidget->move(10,10);
    m_ListWidget->setFont(m_textFont);
    m_ListWidget->setFixedSize(DisW-20,DisH-60);
    m_ListWidget->setViewMode(QListView::ListMode);
    m_ListWidget->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
    connect(m_ListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(doubleclicked(QListWidgetItem*)));

    m_textFont.setPixelSize(25);
    m_openbt = new QPushButton(this);
    m_openbt->setFixedSize(100,40);
    m_openbt->move((DisW-100)/2,DisH-50);
    m_openbt->setFont(m_textFont);
    m_openbt->setText("打开");
    connect(m_openbt,SIGNAL(clicked()),this,SLOT(openbtn()));
}

FileOpenDlg::~FileOpenDlg()
{

}

void FileOpenDlg::openbtn()
{
    OpenFileName;
    QFileInfoList subFileList = m_Dir.entryInfoList(QDir::Files | QDir::CaseSensitive);

    if(subFileList.count()>0)
    {
        qDebug()<<subFileList[m_ListWidget->currentRow()].fileName();
    }

    update();
}

void FileOpenDlg::updateFileDir()
{
    m_Dir = "./";


    QFileInfoList subFileList = m_Dir.entryInfoList(QDir::Files | QDir::CaseSensitive);
    QString str;

    for(int i=0; i<subFileList.size(); i++)
    {
        QListWidgetItem* item = new QListWidgetItem;
        str = subFileList[i].fileName();
        item->setText(str.left(50)+"    "+subFileList[i].filePath());
        m_ListWidget->addItem(item);
    }

    if(subFileList.count()>0)
    {
        m_ListWidget->setCurrentRow(0);
//        qDebug()<<subFileList.size()<<m_ListWidget->currentRow();
    }
}

/*列表项双击操作*/
void FileOpenDlg::doubleclicked(QListWidgetItem* item)
{
    QMessageBox::information(this,"双击消息","双击"+item->text());

}

void FileOpenDlg::showEvent(QShowEvent *)
{
    updateFileDir();
}

void FileOpenDlg::closeEvent(QCloseEvent *)
{

}

void FileOpenDlg::SetBk()
{
    int Wid, Hig;
    Wid = this->width();
    Hig = this->height();

    backgroundPix = QPixmap(Wid,Hig);
    QPainter Rulepainter(&backgroundPix);

    Rulepainter.setRenderHint(QPainter::Antialiasing,true);
    Rulepainter.translate(Wid/2,Hig/2);
    QRadialGradient Radial(0,0,Wid/2,0,0);
    Radial.setColorAt(0, QColor(255,255,255));
    Radial.setColorAt(1, QColor(135,206,255));
    Radial.setSpread(QGradient::ReflectSpread);
    Rulepainter.setPen(QPen(QColor(0, 160, 230), 1));
    Rulepainter.setBrush(Radial);
    Rulepainter.drawRect(QRect(-Wid/2, -Hig/2, Wid, Hig));

    update();
}

void FileOpenDlg::paintEvent(QPaintEvent *)
{
    QPainter m_painter(this);
    m_painter.drawPixmap(0,0, backgroundPix);
}
#ifndef FILEOPENDLG_H
#define FILEOPENDLG_H

#include <QWidget>
#include <QListWidget>
#include <QDir>
#include <QString>
#include <QDebug>
#include <QPushButton>

class CHSApp;

class FileOpenDlg : public QWidget
{
    Q_OBJECT
public:
    explicit FileOpenDlg(QWidget *parent = 0);
    ~FileOpenDlg();
    CHSApp *m_App;
    void paintEvent(QPaintEvent *);
    void showEvent(QShowEvent *);
    void closeEvent(QCloseEvent *);
    void updateFileDir(void);
    QFont   m_textFont;

    int DisW;
    int DisH;
    QListWidget *m_ListWidget;
    QPushButton *m_openbt;
    QDir m_Dir;
    QString OpenFileName;

    QPixmap backgroundPix;
    void SetBk(void);
signals:

public slots:
    void openbtn();
    void doubleclicked(QListWidgetItem* item);
};

#endif // FILEOPENDLG_H

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值