QT学习-10/30/2012

QT拖拽功能简介: http://blog.csdn.net/pcsuite/article/details/6147191

http://blog.csdn.net/xie376450483/article/details/5838892

http://blog.csdn.net/xie376450483/article/details/5839058

QMimeData类:http://blog.csdn.net/xie376450483/article/details/5863810

 

mainwindow.h
#ifndef MAINWINDOW_H  
#define MAINWINDOW_H  
#include <QtGui>  
class MainWindow : public QMainWindow  
{  
    Q_OBJECT  
 
public:  
    MainWindow(QWidget *parent = 0);  
    ~MainWindow();  
 
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);   //关闭QTextEdit的拖放接收
    setAcceptDrops(true);   //打开主窗口的拖放接收
 
    setWindowTitle(tr("Text Editor"));  
}  
 
MainWindow::~MainWindow()  
{  
}  
 
void MainWindow::dragEnterEvent(QDragEnterEvent *event)  
{  
    if (event->mimeData()->hasFormat("text/uri-list")) {   //检测事件的mimeData
        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, 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());  
r=true;
    }  
        return r;  
} 
main.cpp
#include <QtGui/QApplication>  
#include "mainwindow.h"  
 
int main(int argc, char *argv[])  
{  
    QApplication a(argc, argv);  
    MainWindow w;  
    w.show();  
    return a.exec();  
} 

posted on 2012-10-30 12:56  fire_fuxm_USTC  阅读(273)  评论(0编辑  收藏  举报