1. 实现打开文件列表选择文件
1.1. 创建 Qt 工程,并添加几个简单控件
这里笔者选用的是 QMainWindow
,创建好工程后在 ui
界面设计中添加 QLineEdit
、QPushBtton
至少这两个控件,如下图摆放。
1.2. 头文件中添加相关操作
在 mainwindow.h
中添加所要用到的所有头文件。
#include <QString>
#include <QFileDialog>
#include <QStandardPaths>
并声明一个槽函数用于打开文件浏览器。
private slots:void showFiles(void); // 用于打开文件浏览器public:void initUi(void); // 初始化 UI 界面private:QString *fileName; // 用于保存文件路径
1.3. 在 cpp 文件中实现
initUi
函数,实现如下:
void ExcelProcess::initUi()
{this->ui->Lab_FilePath->setText("File Path:");this->ui->PBtn_View->setText("Open File");connect(this->ui->PBtn_View, SIGNAL(clicked()), this, SLOT(showFiles()));}
showFiles
槽函数,实现如下:
void ExcelProcess::showFiles()
{QString str = QFileDialog::getOpenFileName(this, "File Explorer", QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation),"Excel 文件(*.xls *.xlsx);;All file(*.*)");this->ui->LEdit_FilePath->setText(str.toUtf8());*this->fileName = this->ui->LEdit_FilePath->text();qDebug() << *this->fileName << "\n";
}
1.4. 效果演示
完成如上函数,并在构造函数中调用即可,运行查看效果。
2. 实现文件拖拽的方式加载
我们常常见到涉及文件选择的软件,他们都会支持拖拽的方式选择,由于这样的文件选取方式高度的人性化,因此大多数软件都会提供这样的功能。下面就来看看用 Qt
如何实现吧。
2.1. 添加相关头文件,并声明相关操作函数
添加头文件:
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
这里是通过重写下面两个函数来实现文件拖拽功能:
protected:void dragEnterEvent(QDragEnterEvent *event); // 拖动进入事件void dropEvent(QDropEvent *event); // 放下事件
2.2. 在 cpp 文件中实现其具体功能
在构造函数中添加如下代码:
this->setAcceptDrops(true); // 设置主界面接收拖动进来的文件
拖动函数重写:
void ExcelProcess::dragEnterEvent(QDragEnterEvent *event)
{// 这里对拖拽文件进行筛选,仅支持 xls 或 xlsx 文件,用 compara 函数比较文件后缀if ((!event->mimeData()->urls()[0].fileName().right(3).compare("xls")) || (!event->mimeData()->urls()[0].fileName().right(4).compare("xlsx"))) {event->acceptProposedAction();} else {event->ignore(); // 若非这两种文件则不接受鼠标事件}return ;
}void ExcelProcess::dropEvent(QDropEvent *event)
{const QMimeData *qm = event->mimeData();*this->fileName = qm->urls()[0].toLocalFile(); // 获取拖入的文件名this->ui->LEdit_FilePath->setText(*this->fileName);this->movie_01->stop();this->movie_01->setFileName(":/bk/pic/bk_02.gif");this->movie_01->start();return ;
}
2.3. 效果演示
完成如上函数,运行查看效果。