QT学习-10/30/2012

本文介绍了一个使用QT实现文件拖拽功能的例子。通过MainWindow类的dragEnterEvent和dropEvent方法,实现了对拖拽进来的文件进行读取并显示在QTextEdit组件中。此示例涉及QMimeData类的应用及对text/uri-list格式的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

http://blog.youkuaiyun.com/xie376450483/article/details/5838892

http://blog.youkuaiyun.com/xie376450483/article/details/5839058

QMimeData类:http://blog.youkuaiyun.com/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();  
} 

转载于:https://www.cnblogs.com/USTC-fuxm/archive/2012/10/30/2746116.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值