1. 實現(xiàn)打開文件列表選擇文件
1.1. 創(chuàng)建 Qt 工程,并添加幾個簡單控件
這里筆者選用的是 QMainWindow
,創(chuàng)建好工程后在 ui
界面設計中添加 QLineEdit
、QPushBtton
至少這兩個控件,如下圖擺放。
1.2. 頭文件中添加相關(guān)操作
在 mainwindow.h
中添加所要用到的所有頭文件。
#include <QString>
#include <QFileDialog>
#include <QStandardPaths>
并聲明一個槽函數(shù)用于打開文件瀏覽器。
private slots:
void showFiles(void); // 用于打開文件瀏覽器
public:
void initUi(void); // 初始化 UI 界面
private:
QString *fileName; // 用于保存文件路徑
1.3. 在 cpp 文件中實現(xiàn)
initUi
函數(shù),實現(xiàn)如下:
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
槽函數(shù),實現(xiàn)如下:
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. 效果演示
完成如上函數(shù),并在構(gòu)造函數(shù)中調(diào)用即可,運行查看效果。
2. 實現(xiàn)文件拖拽的方式加載
我們常常見到涉及文件選擇的軟件,他們都會支持拖拽的方式選擇,由于這樣的文件選取方式高度的人性化,因此大多數(shù)軟件都會提供這樣的功能。下面就來看看用 Qt
如何實現(xiàn)吧。
2.1. 添加相關(guān)頭文件,并聲明相關(guān)操作函數(shù)
添加頭文件:
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QMimeData>
這里是通過重寫下面兩個函數(shù)來實現(xiàn)文件拖拽功能:
protected:
void dragEnterEvent(QDragEnterEvent *event); // 拖動進入事件
void dropEvent(QDropEvent *event); // 放下事件
2.2. 在 cpp 文件中實現(xiàn)其具體功能
在構(gòu)造函數(shù)中添加如下代碼:
this->setAcceptDrops(true); // 設置主界面接收拖動進來的文件
拖動函數(shù)重寫:
void ExcelProcess::dragEnterEvent(QDragEnterEvent *event)
{
// 這里對拖拽文件進行篩選,僅支持 xls 或 xlsx 文件,用 compara 函數(shù)比較文件后綴
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. 效果演示
完成如上函數(shù),運行查看效果。文章來源:http://www.zghlxwxcb.cn/news/detail-681191.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-681191.html
#完
到了這里,關(guān)于Qt 打開文件列表選擇文件,實現(xiàn)拖拽方式打開文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!