我面临着一个烦人的设计问题。给出我的问题的标题并不容易。

我必须显示两个窗口,一个窗户另一个窗户。第一个是可可窗,第二个是用QT制成的。在第二个窗口中,执行操作,但是用户可以选择关闭此窗口。他必须倒在第一个窗口上。

要显示我的第一个窗口,这实际上是 sfauthorizationpluginview, , 我愿意:

[myview displayView];

然后,要显示第一个窗口顶部上用QT制成的窗口:

QWidget* w = openMyScreen();
NSView* v = (NSView*)w->winId();
[[v window] setLevel:2003];

这效果很好,但是在显示第二个窗口之前,延迟很小。因此,我们可以在很短的时间内看到第一个窗口。

我需要第二个窗口停留在第一个窗口的顶部,因为用户可以关闭第二个窗口,并且必须访问第一个窗口。

关于技巧的任何想法如何隐藏第一个窗口,只是时间,第二个窗口出现?

提前致谢

有帮助吗?

解决方案

NSDisableScreenUpdatesNSEnableScreenUpdates (关联)在这种情况下可能很有用。文档说:

您通常调用此功能,以便在多个Windows上的操作向用户出现原子质。

这似乎描述了您的情况。

不过,一个无关的建议:不要去设置窗口级别。 2003年的窗户级别可能会导致窗户出现在码头甚至菜单栏之类的东西上,这绝对是奇怪的。您应该坚持在 NSWindow.h 除非您有充分的理由。 NSFloatingWindowLevel 可能是合适的(尽管我不确定显示Sfauthorizationpluginview窗口的哪个级别)。

其他提示

从MacOS 10.4开始,您可以使用:

[NSWindow disableScreenUpdatesUntilFlush];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top