Qt: QDropEvent 드래그 이벤트, 드래그 해서 파일 열기

2379 단어 Qt 프로 그래 밍
원본 다운로드 주소: http://download.csdn.net/detail/rl529014/9681291                              
Qt, C + + 학습 커 뮤 니 케 이 션 그룹: 302558294 (가입 을 환영 합 니 다)
필요:
마 우 스 를 통 해 텍스트 파일 을 프로그램 에 끌 어 다 놓 고 텍스트 파일 을 열 어 내용 을 읽 어 창 에 표시 합 니 다.
효과 그림:
주요 사고방식:
1. 다시 쓰기 void dragEnterEvent(QDragEnterEvent *e);    void dropEvent(QDropEvent *e);
2. 가 져 온 파일 이름 에 따라 파일 을 열 고 파일 을 읽 습 니 다.
원본 코드:
main.cpp
#include 
#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include 

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void dragEnterEvent(QDragEnterEvent *e);
    void dropEvent(QDropEvent *e);

private:
    bool readFile(const QString &fileName);
    QTextEdit *textEdit;
};

#endif // MAINWINDOW_H

mainwindow.cpp
#include 
#include 
#include 
#include 
#include 
#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    textEdit = new QTextEdit;
    setCentralWidget(textEdit);

    textEdit->setAcceptDrops(false); //  textEdit       
    setAcceptDrops(true);//  textEdit       

    setWindowTitle(tr("Text Editor"));
}

MainWindow::~MainWindow()
{

}

void MainWindow::dragEnterEvent(QDragEnterEvent *e)
{
    if(e->mimeData()->hasFormat("text/uri-list")) //        
        e->acceptProposedAction(); //              
}

void MainWindow::dropEvent(QDropEvent *e) //     ,     
{
    QList urls = e->mimeData()->urls();
    if(urls.isEmpty())
        return ;

    QString fileName = urls.first().toLocalFile();

    foreach (QUrl u, urls) {
        qDebug()<setText(QString::fromLocal8Bit(data));
    return true;
}

좋은 웹페이지 즐겨찾기