Domanda

Sono di fronte a un piccolo problema di progettazione fastidioso. Non è facile dare un titolo della mia domanda.

Devo visualizzare due finestre, uno sopra l'altro uno. Il primo è una finestra di cacao, il secondo è realizzato con Qt. Nella seconda finestra, viene eseguita un'azione, ma l'utente può scegliere di chiudere questa finestra. Egli deve ripiegare sulla prima finestra.

Per visualizzare la mia prima finestra, che è in realtà un SFAuthorizationPluginView , lo faccio:

[myview displayView];

dunque, per visualizzare la finestra realizzata con Qt sulla parte superiore della prima finestra:

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

Questo metodo funziona bene, però c'è un piccolo ritardo prima viene visualizzata la seconda finestra. Possiamo così vedere per un tempo molto breve la prima finestra.

Ho bisogno che la seconda soggiorni finestra in cima alla prima finestra, perché l'utente può chiudere la seconda finestra e devono avere accesso alla prima finestra.

Tutte le idee su un trucco come nascondere la prima finestra, giusto il tempo, il simbolo appare la seconda finestra?

Grazie in anticipo

È stato utile?

Soluzione

NSDisableScreenUpdates e NSEnableScreenUpdates ( link ) potrebbe essere utile in questa situazione. La documentazione dice:

  

In genere si chiama questa funzione in modo che le operazioni su più finestre appaiono atomica per l'utente.

, che sembra descrivere la vostra situazione.

Un consiglio non collegati però: non si va impostazione dei livelli delle finestre, volenti o nolenti. Un livello di finestra del 2003, probabilmente causerà la finestra per apparire sopra le cose come il dock o anche la barra dei menu, che sarebbe sicuramente strano. Si consiglia di attenersi ai livelli standard dichiarati nel NSWindow.h meno che non abbiate una buona ragione. NSFloatingWindowLevel potrebbe essere opportuno (anche se non sono sicuro di quale livello la finestra SFAuthorizationPluginView viene visualizzata).

Altri suggerimenti

A partire con MacOS 10.4, è possibile utilizzare:

[NSWindow disableScreenUpdatesUntilFlush];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top