最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT實現多文件拖拽獲取路徑的方法

 更新時間:2022年08月04日 13:07:47   作者:Jason~shen  
這篇文章主要為大家詳細介紹了QT實現多文件拖拽獲取路徑的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了QT實現多文件拖拽獲取路徑的具體代碼,供大家參考,具體內容如下

功能

將多個文件拖拽進界面中,顯示文件的路徑。

實現

1、啟用窗體放下操作

this->setAcceptDrops(true);//啟用放下操作

2、重寫dragEnterEvent()函數,用于篩選拖拽事件

void dragEnterEvent(QDragEnterEvent *e);

void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
? ? //對拖放事件進行篩選
? ? if (true)
? ? {
? ? ? ? e->acceptProposedAction();?? ?//放行,否則不會執(zhí)行dropEvent()函數
? ? }
}

3、重寫dropEvent()函數,用于處理拖拽事件

void dropEvent(QDropEvent *e);

void MainWindow::dropEvent(QDropEvent *e)
{
? ? QList<QUrl> urls = e->mimeData()->urls();
? ? if(urls.isEmpty())
? ? ? ? return ;
? ? qDebug()<< urls.size();
? ? foreach (QUrl u, urls)
? ? {
? ? ? ? QString filepath = u.toLocalFile();
? ? ? ? pathlist.append(filepath);
? ? }
}

4、重復文件去除

QList存儲文件路徑,由于Qset是沒有重復項的,故可先轉換為set,再轉回為list即可。

pathlist = pathlist.toSet().toList();

效果

UI布局

最后效果

源碼

頭文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
?
#include <QMainWindow>
#include <QTextEdit>
?
namespace Ui {
class MainWindow;
}
?
class MainWindow : public QMainWindow
{
? ? Q_OBJECT
?
public:
? ? explicit MainWindow(QWidget *parent = 0);
? ? ~MainWindow();
?
protected:
? ? void dragEnterEvent(QDragEnterEvent *e);
? ? void dropEvent(QDropEvent *e);
?
private slots:
? ? void on_pushButton_upload_clicked();
?
private:
? ? Ui::MainWindow *ui;
? ? QList<QString> pathlist;
};
?
#endif // MAINWINDOW_H

源文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
?
#include <QDragEnterEvent>
#include <QFile>
#include <QDebug>
#include <QMimeData>
MainWindow::MainWindow(QWidget *parent) :
? ? QMainWindow(parent),
? ? ui(new Ui::MainWindow)
{
? ? ui->setupUi(this);
?
? ? ui->textEdit->setAcceptDrops(false); //禁用控件的放下操作
? ? this->setAcceptDrops(true);//啟用放下操作
}
?
MainWindow::~MainWindow()
{
? ? delete ui;
}
?
void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
? ? //對拖放事件進行篩選
? ? if (true)
? ? {
? ? ? ? e->acceptProposedAction();?? ?//放行,否則不會執(zhí)行dropEvent()函數
? ? }
}
?
void MainWindow::dropEvent(QDropEvent *e)
{
? ? QList<QUrl> urls = e->mimeData()->urls();
? ? if(urls.isEmpty())
? ? ? ? return ;
? ? qDebug()<< urls.size();
? ? foreach (QUrl u, urls)
? ? {
? ? ? ? QString filepath = u.toLocalFile();
? ? ? ? pathlist.append(filepath);
? ? }
? ? //去掉重復路徑
? ? pathlist = pathlist.toSet().toList();
? ? ui->textEdit->clear();
? ? for(int i=0;i<pathlist.size();++i)
? ? {
? ? ? ? QString path = pathlist.at(i);
? ? ? ? ui->textEdit->append(path);
? ? }
}
?
?
void MainWindow::on_pushButton_upload_clicked()
{
? ? qDebug()<<pathlist;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 深入了解C++11中promise和future的使用

    深入了解C++11中promise和future的使用

    C++11中promise和future機制是用于并發(fā)編程的一種解決方案,用于在不同線程完成數據傳遞(異步操作)。Promise和Future提供了訪問異步操作結果的機制,可以在線程之間傳遞數據和異常消息。本文就來聊聊二者的使用,希望對大家有所幫助
    2022-11-11
  • C++項目實戰(zhàn)之makefile使用

    C++項目實戰(zhàn)之makefile使用

    這篇文章主要介紹了C++項目實戰(zhàn)之makefile使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • C++算法之在無序數組中選擇第k小個數的實現方法

    C++算法之在無序數組中選擇第k小個數的實現方法

    這篇文章主要介紹了C++算法之在無序數組中選擇第k小個數的實現方法,涉及C++數組的遍歷、判斷、運算等相關操作技巧,需要的朋友可以參考下
    2017-03-03
  • c語言算術運算符越界問題解決方案

    c語言算術運算符越界問題解決方案

    大量的安全漏洞是由于計算機算術運算的微妙細節(jié)引起的, 具體的C語言, 諸如符號數和無符號數之間轉換, 算術運算的越界都會導致不可預知的錯誤和安全漏洞, 具體的案例數不勝數.
    2012-11-11
  • C++設計模式編程中proxy代理模式的使用實例

    C++設計模式編程中proxy代理模式的使用實例

    這篇文章主要介紹了C++設計模式編程中proxy代理模式的使用實例解析,代理模式可以被歸類為結構型的設計模式,代理模式主張為對象提供一種代理以控制對這個對象的訪問,需要的朋友可以參考下
    2016-03-03
  • C++深入分析講解智能指針

    C++深入分析講解智能指針

    為了解決內存泄漏的問題,C++中提出了智能指針。內存泄漏的產生原因有很多,即使我們正確的使用malloc和free關鍵字也有可能產生內存泄漏,如在malloc和free之間如果存在拋異常,那也會產生內存泄漏。這種問題被稱為異常安全
    2022-05-05
  • 一文帶你搞懂C++中的流量控制

    一文帶你搞懂C++中的流量控制

    限流可以認為服務降級的一種,限流就是限制系統(tǒng)的輸入和輸出流量已達到保護系統(tǒng)的目的,這篇文章小編就來帶大家深入了解一下如何利用C++實現流量控制吧
    2023-10-10
  • C++實現LeetCode(179.最大組合數)

    C++實現LeetCode(179.最大組合數)

    這篇文章主要介紹了C++實現LeetCode(179.最大組合數),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C/C++實現推箱子小游戲

    C/C++實現推箱子小游戲

    這篇文章主要為大家詳細介紹了C/C++實現推箱子小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Dev C++中文亂碼的有效解決方案

    Dev C++中文亂碼的有效解決方案

    在DevC++中出現漢字亂碼的問題通常是由于編碼設置不正確導致的,本文通過圖文結合的方式給大家介紹了解決方法,對大家的解決問題有一定的幫助,需要的朋友可以參考下
    2025-04-04

最新評論

盱眙县| 崇文区| 石棉县| 如皋市| 黄平县| 丰县| 陇西县| 琼中| 丹巴县| 邯郸县| 乌拉特后旗| 正定县| 汉阴县| 达日县| 平塘县| 武胜县| 凤翔县| 石渠县| 江口县| 罗山县| 南阳市| 湖北省| 克什克腾旗| 嘉兴市| 松江区| 望都县| 子洲县| 平度市| 榕江县| 宜春市| 侯马市| 札达县| 原阳县| 尚义县| 临沭县| 社会| 镇平县| 伊通| 乐昌市| 于都县| 浦县|