gpt4 book ai didi

qt - 拖放窗口

转载 作者:行者123 更新时间:2023-12-03 21:28:29 36 4
gpt4 key购买 nike

我有定制QWidget包含自定义 QWindow . QWindow with OpenGL 用作渲染框架和 Qt 应用程序之间的“连接器”。

鼠标和键盘事件通过覆盖 QWindow 处理方法。

伪代码:

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
};

问题:如何处理放置事件(无论在哪里)?

问题:
  • QWindow不提供用于拖放支持的虚拟方法。
  • QWidget::dragEnterEvent , QWidget::dropEvent (和类似的)不被调用。
  • QWindow仍然接受鼠标事件,甚至 setMouseGrabEnabled( false );设置。

  • 注意:我发现了 setMouseGrabEnabled( false ); 的电话在 QWindow 中不会阻止鼠标事件处理.

    最佳答案

    我找到了一个解决方案:

    有必要在 QWindow 上安装事件过滤器并在那里处理事件( eventFilter )。

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

    关于qt - 拖放窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28829679/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com