我注意到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();
}
我错过了什么吗?
答案 0 :(得分:3)
似乎是特定于Mac的问题(它至少在Linux上按预期工作)。向诺基亚填写了错误报告:https://bugreports.qt.io/browse/QTBUG-27125
答案 1 :(得分:2)
正如chebum附带的链接所述,在撰写本文时,QtQuick在任何平台上都不支持该功能。
仅发布以便让未来的读者知道。
答案 2 :(得分:0)
QtQuick 5.2支持从外部应用程序拖放。请参阅示例http://qt-project.org/doc/qt-5/qtquick-externaldraganddrop-example.html