Frage

Ich bin ein wenig ärgerlich Design Problem. Nicht leicht, einen Titel meiner Frage zu geben.

Ich muss zwei Fenster angezeigt werden, eine über einen anderen. Der erste ist ein Cocoa Fenster, die zweite wird mit Qt. Im zweiten Fenster wird eine Aktion ausgeführt, aber der Benutzer auswählen kann, um das Fenster zu schließen. Er muss auf dem ersten Fenster fällt zurück.

Für mein erstes Fenster angezeigt, das ist eigentlich ein SFAuthorizationPluginView , das tue ich:

[myview displayView];

dann, um das Fenster mit Qt oben auf ersten Fenstern gemacht anzuzeigen:

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

Das funktioniert gut, aber es gibt eine kleine Verzögerung, bevor das zweite Fenster angezeigt wird. So können wir für eine sehr kurze Zeit, um das erste Fenster.

Ich brauche, dass die zweite Fenster bleibt an der Spitze des ersten Fensters, da der Benutzer das zweite Fenster schließen und den Zugang zu dem ersten Fenster hat.

Irgendwelche Ideen auf einem Trick, wie das erste Fenster zu verstecken, nur um die Zeit, das zweite Fenster erscheint?

Vielen Dank im Voraus

War es hilfreich?

Lösung

NSDisableScreenUpdates und NSEnableScreenUpdates ( link ) könnte in dieser Situation nützlich sein. Die Dokumentation sagt:

Sie rufen typischerweise diese Funktion, so dass Operationen auf mehreren Fenstern erscheinen Atom an den Benutzer.

, die Ihre Situation zu beschreiben scheint.

Ein Wort der unabhängigen Beratung obwohl: Gehen Sie nicht Fenster Ebenen Einstellung nolens volens. Ein Fenster Niveau des Jahres 2003 wird wahrscheinlich dazu führen, das Fenster Dinge zu erscheinen über wie das Dock oder auch in der Menüleiste, die auf jeden Fall seltsam wäre. Sie sollten die Standardebene in NSWindow.h erklärt bleiben, es sei denn Sie haben guten Grund. NSFloatingWindowLevel könnte angemessen sein (obwohl ich nicht sicher bin, was Niveau der SFAuthorizationPluginView Fenster angezeigt wird).

Andere Tipps

Beginnend mit MacOS 10.4 können Sie verwenden:

[NSWindow disableScreenUpdatesUntilFlush];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top