由createWindowContainer创建的QWidget不使用installEventFilter接收鼠标事件

时间:2017-07-07 13:51:48

标签: c++ macos qt

使用createWindowContainer创建一个QWidget指针对象时,qq场景嵌入到QQuickView实例中,即

QWidget* wig = QWidget::createWindowContainer(quickView, 0, Qt::Window);
// this is to support drag and drop 
wig->setAcceptDrops(true);
wig->installEventFilter(this);

然后将以下方法添加到myClass以拦截假发上的事件

bool myclass::eventFilter(QObject *obj, QEvent *event){
}

似乎无法拦截与拖放等鼠标事件相关的事件。即QMouseEvent,QDragEnter,QDropEvent ......等。

当我只切换到正常的QWidget instanct时,即

QWidget* wig = new QWidget;

我能够正常跟踪鼠标,拖放事件。

我已经在Windows 10和Ubuntu 16.10以及Qt 5.7.1上测试了上述场景,并且它们都运行正常,我已经能够从QWidget跟踪鼠标和拖放事件由QWidget :: createWindowContainer创建。

问题仅发生在Mac OSX(El Capitan和Sierra)上

我附上了一个展示问题的工作示例,here

我做错了什么或者是否有解决这个问题的方法。

我正在使用Mac OSX El Capitan以及Qt 5.7.1。 感谢。

0 个答案:

没有答案
相关问题