使用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。 感谢。