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