隐藏窗口直到显示顶部窗口
-
09-10-2019 - |
题
我面临着一个烦人的设计问题。给出我的问题的标题并不容易。
我必须显示两个窗口,一个窗户另一个窗户。第一个是可可窗,第二个是用QT制成的。在第二个窗口中,执行操作,但是用户可以选择关闭此窗口。他必须倒在第一个窗口上。
要显示我的第一个窗口,这实际上是 sfauthorizationpluginview, , 我愿意:
[myview displayView];
然后,要显示第一个窗口顶部上用QT制成的窗口:
QWidget* w = openMyScreen();
NSView* v = (NSView*)w->winId();
[[v window] setLevel:2003];
这效果很好,但是在显示第二个窗口之前,延迟很小。因此,我们可以在很短的时间内看到第一个窗口。
我需要第二个窗口停留在第一个窗口的顶部,因为用户可以关闭第二个窗口,并且必须访问第一个窗口。
关于技巧的任何想法如何隐藏第一个窗口,只是时间,第二个窗口出现?
提前致谢
解决方案
NSDisableScreenUpdates
和 NSEnableScreenUpdates
(关联)在这种情况下可能很有用。文档说:
您通常调用此功能,以便在多个Windows上的操作向用户出现原子质。
这似乎描述了您的情况。
不过,一个无关的建议:不要去设置窗口级别。 2003年的窗户级别可能会导致窗户出现在码头甚至菜单栏之类的东西上,这绝对是奇怪的。您应该坚持在 NSWindow.h
除非您有充分的理由。 NSFloatingWindowLevel
可能是合适的(尽管我不确定显示Sfauthorizationpluginview窗口的哪个级别)。
其他提示
从MacOS 10.4开始,您可以使用:
[NSWindow disableScreenUpdatesUntilFlush];
不隶属于 StackOverflow