主要要实现 两个方法
void dragEnterEvent(QDragEnterEvent *);
void dropEvent(QDropEvent *);
下面一个简答的小例子,拖拽一个txt文档到 程序中 用QTextEdit来显示
#include <QMainWindow>
#include <QtGui>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void dragEnterEvent(QDragEnterEvent *);
void dropEvent(QDropEvent *);
private:
QTextEdit *m_textEdit;
};
#endif // MAINWINDOW_H
cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
setAcceptDrops(true);
m_textEdit = new QTextEdit();
m_textEdit->setAcceptDrops(false);
setCentralWidget(m_textEdit);
}
MainWindow::~MainWindow()
{
}
void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
event->acceptProposedAction(); //接收这个操作,如果没有这句,则不能接收拖动
}
void MainWindow::dropEvent(QDropEvent *event)
{
QList<QUrl> urls = event->mimeData()->urls();
if(urls.isEmpty())
{
return;
}
QString fileName = urls.first().toLocalFile();
QFileInfo fileInfo(fileName);
qDebug() << fileInfo.fileName();
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
return;
}
QTextStream stream(&file);
m_textEdit->setText(stream.readAll());
file.close();
}