禁用Mac OS上的窗口

时间:2014-06-03 06:26:49

标签: c++ macos qt cocoa user-interface

如何在Qt应用程序中禁用Mac OS上的窗口以使其无法移动?我没有找到任何良好的跨平台方式,因此尝试使用EnableWindow单独为Windows执行此操作并且它可以正常工作。 Mac OS的方式是什么?

2 个答案:

答案 0 :(得分:3)

没有跨平台的方法来防止窗户移动。但您可以覆盖QWidget::moveEvent,如:

void MyWindow::moveEvent(QMoveEvent *event)
{

    if (event->pos() != QPoint(100,100))
          move(QPoint(100,100));

}

在释放鼠标之前,这不会更新。

另一种方法是为窗口设置Qt::FramelessWindowHint标志并渲染自定义标题栏。

答案 1 :(得分:0)

至于我们没有找到良好的跨平台方式来实现这一点,我们以Windows和Mac OS的单独代码结束。以下是我们用于Mac OS启用/禁用窗口的代码:

#include <AppKit/NSView.h>
#include <AppKit/NSWindow.h>

void MacOSUtils::enableWindow(WId id, bool enable)
{
    NSView * view = reinterpret_cast<NSView*>(id);
    Q_ASSERT(view);
    NSWindow * window = [view window];
    [window setMovable:enable];
}