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