Qt:隐藏然后显示 QQuickView 防止未来的鼠标事件

Posted

技术标签:

【中文标题】Qt:隐藏然后显示 QQuickView 防止未来的鼠标事件【英文标题】:Qt: hiding then showing QQuickView prevents future mouse events 【发布时间】:2016-11-09 05:46:06 【问题描述】:

我使用 createWindowContainer() 将 QQuickView 嵌入到另一个小部件上。

quickView = new QQuickView(...);
container = new QWidget();
createWindowContainer(quickView, container);

然后我将容器小部件添加到窗口内的小部件中。

layout = new QVBoxLayout();
fullWindowWidget->setLayout(layout);
layout->addWidget(container);

这似乎在渲染方面工作得很好,但如果我隐藏然后显示容器,QQuickView QML 场景似乎无法处理鼠标事件。如果我在容器可见的情况下启动应用程序,它会很好地处理鼠标事件。但是,如果我从隐藏容器开始并显示容器,则对容器的任何点击似乎都会冒泡到它后面的小部件。隐藏容器是否会使 QQuickView 处于一种奇怪的状态,即使它再次可见也会阻止点击?

【问题讨论】:

【参考方案1】:

看起来我在主窗口上调用grabMouse()。在显示容器之前调用releaseMouse() 似乎可以修复它。

【讨论】:

以上是关于Qt:隐藏然后显示 QQuickView 防止未来的鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章

带有 QQuickView 的 QML 信号 QT 插槽

退出时删除 QQuickView 会导致 Qt 应用程序冻结

将 QML(QQuickView) 添加到现有 UI

在 Qt5.3(mingw32) 中删除 QQuickView 的内存管理问题

Qt dataChanged信号较慢然后隐藏/显示视图

QQuickWidget中的组件与QQuickView中的组件行为不同