首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用QWindow拖拽

用QWindow拖拽
EN

Stack Overflow用户
提问于 2015-03-03 10:40:06
回答 1查看 724关注 0票数 4

我有包含自定义QWidget的自定义QWindow。使用QWindow和OpenGL作为呈现框架和Qt应用程序之间的“连接器”。

鼠标和键盘事件是用重写QWindow方法处理的。

伪码:

代码语言:javascript
复制
class MyWindow : public QWindow
{
public:
  MyWindow : QWindow() { /* GL stuff init*/ }
protected:
  // mouse/keyboard event handling
  // expose event handling
  // resize event handling
  // ...
};

class MyWidget : public QWidget
{
public:
  MyWidget : QWidget()
  {
    auto window = new MyWindow();
    auto container = createWindowContainer(window);
    layout()->addWidget( container );
    setAcceptDrops( true );
  }

protected:
  // overriding drop event, but is doesn't work
};

问:如何处理删除事件(在哪里不重要)?

问题:

  1. QWindow不提供拖放支持的虚拟方法。
  2. QWidget::dragEnterEventQWidget::dropEvent (和类似的)不被调用。
  3. QWindow仍然接受鼠标事件,甚至设置了setMouseGrabEnabled( false );

注意:我发现setMouseGrabEnabled( false );的调用不会阻止QWindow中的鼠标事件处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 12:34:04

我找到了一个解决办法:

有必要在QWindow和process (eventFilter)上安装事件过滤器。

QWidget (容器)上安装事件过滤器是可能的,但它在OS上不起作用。这可能是Qt中的一个bug,因为在Win下一切都很好。

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

https://stackoverflow.com/questions/28829679

复制
相关文章

相似问题

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