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(); //能够在这个窗口部件上拖放对象
if(e->mimeData()->hasFormat("application/x-dnditemdata0")) { //自定义的MIME类型
e->acceptProposedAction();
qDebug() << "enter";
}
}
void MainWindow::dropEvent(QDropEvent *e) //释放对方时,执行的操做
{
qDebug() << "haha";
QString txt = e->mimeData()->text();
qDebug() << "is:" << txt;
QList<QUrl> urls = e->mimeData()->urls();
if(urls.isEmpty())
return ;
QString fileName = urls.first().toLocalFile();
foreach (QUrl u, urls) {
qDebug()<<u.toString();
}
qDebug()<< urls.size();
if(fileName.isEmpty())
return;
if(readFile(fileName))
setWindowTitle(tr("%1 - %2").arg(fileName).arg("Drag File"));
}
bool MainWindow::readFile(const QString &fileName) //读文件
{
QFile file(fileName);
if(!file.open(QFile::ReadOnly | QFile::Text))
return false;
QByteArray data;
data = file.readAll();
//textEdit->setText(QString::fromLocal8Bit(data));
return true;
}