QML DropArea接受外部拖动



我注意到Qt5中有一个新的DropArea组件。我正试图从Finder(Mac)中拖动一个文件,但只调用了onEntered方法。

import QtQuick 2.0
Rectangle {
    id: background;
    color: "white";
    width: 300;
    height: 300;
    DropArea {
        id: dropArea;
        anchors.fill: parent;
        onEntered: {
            background.color = "gray";
            drag.accept (Qt.CopyAction);
            console.log("onEntered");
        }
        onDropped: {
            console.log ("onDropped");
        }
        onExited: {
            bckground.color = "white";
            console.log ("onExited");
        }
    }
}

这是窗口创建代码:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QQuickView qmlView;
    qmlView.setGeometry(0, 200, 600, 400);
    qmlView.setResizeMode (QQuickView::SizeRootObjectToView);
    qmlView.setSource(QUrl::fromLocalFile("/Users/ivann/Projects/QtGuiTestApp/testView.qml"));
    qmlView.show();
    return a.exec();
}

我是不是错过了什么?

这似乎是Mac特有的问题(至少在Linux上是意料之中的)。向诺基亚填写错误报告:https://bugreports.qt.io/browse/QTBUG-27125

正如chebum附带的链接中所述,在撰写本文时,QtQuick在任何平台上都不支持该功能。

只是为了让未来的读者知道。

QtQuick 5.2支持从外部应用程序进行拖放。参见示例http://qt-project.org/doc/qt-5/qtquick-externaldraganddrop-example.html

相关内容

  • 没有找到相关文章

最新更新