拖拽和放下事件

来源:互联网 发布:我的世界和村民交易js 编辑:程序博客网 时间:2024/05/22 15:27

mainwindow.h

#include <QMainWindow>#include <QTextEdit>class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();protected:    void dragEnterEvent(QDragEnterEvent *event);    void dropEvent(QDropEvent *event);private:    bool readFile(const QString &fileName);    QTextEdit *textEdit;private:};

mainwindow.cpp

#include <QDragEnterEvent>#include <QDropEvent>#include <QMimeData>#include <QList>#include <QTextStream>#include <QList>#include <QUrl>#include <QFile>#include <QDebug>MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent){    textEdit = new QTextEdit;    setCentralWidget(textEdit);    textEdit->setAcceptDrops(false);   //关闭QTextEdit的拖放接收,显示被拖放项目的文件内容//    textEdit->setAcceptDrops(true);//只显示被拖放项目的文件名    setAcceptDrops(true);   //打开主窗口的拖放接收    setWindowTitle(tr("Text Editor"));}MainWindow::~MainWindow(){}void MainWindow::dragEnterEvent(QDragEnterEvent *event){    if (event->mimeData()->hasFormat("text/uri-list")) {   //检测事件的mimeData        event->acceptProposedAction();//        event->accept();    }}void MainWindow::dropEvent(QDropEvent *event){    QList<QUrl> urls = event->mimeData()->urls();    if (urls.isEmpty()) {        return;    }    QString fileName = urls.first().toLocalFile();    qDebug() << "fileName: " << fileName;    if (fileName.isEmpty()) {        return;    }    if (readFile(fileName)) {        setWindowTitle(tr("%1 - %2").arg(fileName, 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->setText(in.readAll());        r=true;    }    return r;}
原创粉丝点击