首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QEvent::Drop事件从未为QQuickView窗口生成

QEvent::Drop事件从未为QQuickView窗口生成
EN

Stack Overflow用户
提问于 2017-04-19 23:29:41
回答 1查看 340关注 0票数 0

我正在努力解决一个问题,即QEvent::Drop事件从未为我的QQuickView窗口生成。

我需要实现拖放功能,以便将文件从资源管理器拖放到QQuickView中。

正如在这个post中所描述的,我已经为QQuickView objet和eventFilter()方法提供了一个事件过滤器,试图捕获所需的事件。当我将一个文件拖到视图上时,QEvent::DragMove将按预期的方式生成。但是,当我将文件放到视图中时,不会生成QEvent::Drop。相反,生成QEvent::DragLeave

代码语言:javascript
复制
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();
}

下面是一个(事件)过滤器类代码:(头)

代码语言:javascript
复制
class Filter : public QObject
{
    Q_OBJECT
public:
    Filter(){};
    virtual bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE;
};

(来源)

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 15:29:02

我的同事帮我解答了这个问题。显然,您必须向您的DropArea根文件中添加一个QML项,然后QQuickView将开始接收QEvent::Drop事件。不过,我找不到关于这个例子的任何文档,我还想知道,如果您有一个QWindow类,那么有什么更通用的解决方案呢?总之,我要结束这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43507738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档