Qt删除文件|苹果系统

时间:2013-11-21 14:28:07

标签: c++ qt drag-and-drop qmainwindow qtgui

我做了很多次搜索(引导我thisthat)并在我的课程中添加几行

MainWindow.cpp

#include <QtGui/QDragEnterEvent>
#include <QtGui/QDragLeaveEvent>
#include <QtGui/QDragMoveEvent>
#include <QtGui/QDropEvent>
#include <QtCore/QMimeData>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    ....
    setAcceptDrops(true);
}

void MainWindow::dragEnterEvent(QDragEnterEvent *event)
{
    event->acceptProposedAction();
}

void MainWindow::dropEvent(QDropEvent *event)
{
    qDebug() << "On Drop Event";
    const QMimeData* mimeData = event->mimeData();

    if (mimeData->hasUrls())
    {
        QStringList pathList;
        QList<QUrl> urlList = mimeData->urls();

        for (int i = 0; i < urlList.size() && i < 32; ++i)
        {
            pathList.append(urlList.at(i).toLocalFile());
        }

        if(openFiles(pathList))
            event->acceptProposedAction();
    }
}
void MainWindow::dragMoveEvent(QDragMoveEvent * event)
{
event->acceptProposedAction();
}
void MainWindow::dragLeaveEvent(QDragLeaveEvent* event)
{
    event->accept();
}

但我不能将文件放到我的MainWindow上(来自取景器)。这不是我的代码崩溃或不编译,只是我字面上不能MainWindow没有反应,没有突出显示,没有反应。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我怀疑你也应该重载dragMoveEvent: -

void QWidget::dragMoveEvent(QDragMoveEvent * event)

正如文档所述: -

  

如果正在进行拖动,则会调用此事件处理程序,并且当出现以下任何情况时:光标进入此窗口小部件,光标在此窗口小部件内移动,或者在此窗口小部件具有键盘上按下修改键焦点。事件在事件参数中传递。

有一个Qt拖放here的例子。具体来说,this是一个很好的参考。