拖拽功能,拖拽文档到程序

来源:互联网 发布:python命令大全 编辑:程序博客网 时间:2024/06/11 18:58

主要要实现  两个方法

     voiddragEnterEvent(QDragEnterEvent*);

     void dropEvent(QDropEvent*);

下面一个简答的小例子,拖拽一个txt文档到 程序中 用QTextEdit来显示

#include <QMainWindow>#include <QtGui>class MainWindow : public QMainWindow{    Q_OBJECT    public:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    protected:    void dragEnterEvent(QDragEnterEvent *);    void dropEvent(QDropEvent *);private:    QTextEdit *m_textEdit;};#endif // MAINWINDOW_H

cpp

MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent){    setAcceptDrops(true);    m_textEdit = new QTextEdit();    m_textEdit->setAcceptDrops(false);    setCentralWidget(m_textEdit);}MainWindow::~MainWindow(){}void MainWindow::dragEnterEvent(QDragEnterEvent *event){    event->acceptProposedAction();  //接收这个操作,如果没有这句,则不能接收拖动}void MainWindow::dropEvent(QDropEvent *event){    QList<QUrl> urls = event->mimeData()->urls();    if(urls.isEmpty())    {        return;    }    QString fileName = urls.first().toLocalFile();    QFileInfo fileInfo(fileName);    qDebug() << fileInfo.fileName();    QFile file(fileName);    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))    {        return;    }    QTextStream stream(&file);    m_textEdit->setText(stream.readAll());    file.close();}