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) 编辑 收藏 举报