【发布时间】:2017-09-16 09:24:32
【问题描述】:
我正在努力解决我的QQuickView 窗口永远不会生成QEvent::Drop 事件的问题。
我需要实现拖放功能,将文件从资源管理器拖放到QQuickView。
正如post 中所述,我为QQuickView 对象安装了一个事件过滤器,并在eventFilter() 方法中尝试捕获所需的事件。 QEvent::DragMove 正在按预期生成,因为我将文件拖到视图上。但是当我将文件放到视图上时,QEvent::Drop 不会生成。而是生成QEvent::DragLeave。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
Filter f;
QQuickView *view = new QQuickView;
view->installEventFilter(&f);
view->show();
return a.exec();
}
这是一个(事件)过滤器类代码: (标题)
class Filter : public QObject
{
Q_OBJECT
public:
Filter(){};
virtual bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
};
(来源)
bool Filter::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::DragMove)
qDebug() << "it's a drag";
if(event->type() == QEvent::Drop)
qDebug() << "it's a drop"; // <<-- Never reaches here
return QObject::eventFilter(watched, event);
}
【问题讨论】:
标签: qt drag-and-drop qevent eventfilter