Pregunta

Estoy frente a un problema de diseño poco molesto. No es fácil dar un título de mi pregunta.

Debo mostrar dos ventanas, una sobre otra. La primera es una ventana de cacao, el segundo se hace con Qt. En la segunda ventana, se realiza una acción, pero el usuario puede optar por cerrar esta ventana. Tendrá que caer de nuevo en la primera ventana.

Para mostrar mi primera ventana, que es en realidad un SFAuthorizationPluginView , que hago:

[myview displayView];

entonces, para mostrar la ventana hecha con Qt en la parte superior de la primera ventana:

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

Esto funciona bien, sin embargo hay un pequeño retraso antes de que aparezca la segunda ventana. De este modo podemos ver por un tiempo muy corto la primera ventana.

Necesito que la segunda ventana permanece en primer plano de la primera ventana, ya que el usuario puede cerrar la segunda ventana y deben tener acceso a la primera ventana.

Cualquier idea en un truco de cómo ocultar la primera ventana, justo el tiempo, los segundos aparece la ventana?

Gracias de antemano

¿Fue útil?

Solución

NSDisableScreenUpdates y NSEnableScreenUpdates ( enlace ) podría ser útil en esta situación. La documentación dice:

Por lo general, llama a esta función de manera que las operaciones en múltiples ventanas aparecen atómica para el usuario.

lo que parece describir su situación.

Un consejo no relacionados sin embargo: No vaya a establecer los niveles de ventanas de cualquier manera. A nivel de las ventanas de 2003 probablemente hará que la ventana que aparece sobre cosas como el muelle o incluso la barra de menús, lo que sin duda sería extraño. Debe ajustarse a los niveles estándar declaradas en NSWindow.h a menos que tenga una buena razón. NSFloatingWindowLevel podría ser apropiado (aunque no estoy seguro de qué nivel se muestra en la ventana SFAuthorizationPluginView).

Otros consejos

A partir de MacOS 10.4, puede utilizar:

[NSWindow disableScreenUpdatesUntilFlush];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top