zoukankan      html  css  js  c++  java
  • QT 实现拖放功能

    1. 文档拖放 获取文件名

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    #include <QMainWindow>
    #include <QtGui>
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        
    public:
        MainWindow(QWidget *parent = 0);
    
    protected:
        void dragEnterEvent(QDragEnterEvent *event);
        void dropEvent(QDropEvent *event);
    
    private:
        bool readFile(const QString &fileName);
        QTextEdit *textEdit;
    };
    #endif // MAINWINDOW_H

    mainwindow.cpp

    #include "mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        textEdit = new QTextEdit;
        setCentralWidget(textEdit);
        textEdit->setAcceptDrops(false);
        setAcceptDrops(true);
        setWindowTitle(tr("Drag test"));
    }
    
    void MainWindow::dragEnterEvent(QDragEnterEvent *event)
    {
        if( event->mimeData()->hasFormat("text/uri-list") )
            event->acceptProposedAction();
    }
    
    void MainWindow::dropEvent(QDropEvent *event)
    {
        QList<QUrl> urls = event->mimeData()->urls();
        if(urls.isEmpty())
            return;
        QString fileName = urls.first().toLocalFile();
        if(fileName.isEmpty())
            return;
        if(readFile(fileName))
            setWindowTitle(tr("%1-%2").arg(fileName).arg(tr("Drag File")));
    }
    
    bool MainWindow::readFile(const QString &fileName)
    {
        bool r = false;
        QFile file(fileName);
        QTextStream in(&file);
        if( file.open(QIODevice::ReadOnly | QFile::Text) )
        {
            textEdit->setText(in.readAll());
            textEdit->append(fileName);
            r = true;
        }
        return r;
    }
    


     

  • 相关阅读:
    3-百度网盘视频在线倍速播放
    16-算法训练 数字三角形
    【2018ACM/ICPC网络赛】徐州赛区
    【python】collections的使用
    【python】遇到的错误
    【2018ACM/ICPC网络赛】沈阳赛区
    【csp】2018-3
    【python】快速排序
    【csp】2017-12
    【校OJ】选网线
  • 原文地址:https://www.cnblogs.com/xj626852095/p/3648215.html
Copyright © 2011-2022 走看看