Question

Je suis face à un petit problème de conception ennuyeux. Pas facile de donner un titre de ma question.

Je dois afficher deux fenêtres, l'une sur l'autre. La première est une fenêtre de cacao, la deuxième est faite avec Qt. Dans la deuxième fenêtre, une action est effectuée, mais l'utilisateur peut choisir de fermer cette fenêtre. Il doit se rabattre sur la première fenêtre.

Pour afficher ma première fenêtre, qui est en fait un SFAuthorizationPluginView , je fais:

[myview displayView];

puis, pour afficher la fenêtre faite avec Qt sur le dessus de la première fenêtre:

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

Cela fonctionne bien, mais il y a un petit délai avant que la deuxième fenêtre est affichée. On peut ainsi voir pour un temps très court la première fenêtre.

J'ai besoin que le deuxième séjour de fenêtre au-dessus de la première fenêtre, car l'utilisateur peut fermer la seconde fenêtre et doivent avoir accès à la première fenêtre.

Toutes les idées sur une astuce comment cacher la première fenêtre, le temps, la deuxième fenêtre apparaît?

Merci à l'avance

Était-ce utile?

La solution

NSDisableScreenUpdates et NSEnableScreenUpdates ( lien ) pourrait être utile dans cette situation. La documentation dit:

  

Vous appelez généralement cette fonction afin que les opérations sur plusieurs fenêtres apparaissent atomiques à l'utilisateur.

qui semble décrire votre situation.

Un conseil indépendant cependant: ne vont pas fixer les niveaux de fenêtre bon gré mal gré. Un niveau de 2003 de la fenêtre sera probablement provoquer la fenêtre d'apparaître sur des choses comme la station d'accueil ou même la barre de menu, ce qui serait certainement étrange. Vous devez en tenir aux niveaux de qualité déclarés dans NSWindow.h sauf si vous avez une bonne raison. NSFloatingWindowLevel pourrait être approprié (même si je ne suis pas sûr à quel niveau la fenêtre SFAuthorizationPluginView est affiché à).

Autres conseils

A partir de Mac OS 10.4, vous pouvez utiliser:

[NSWindow disableScreenUpdatesUntilFlush];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top