2015-01-09 18 views
5

Ho una finestra dell'interfaccia utente chiamata dalla finestra principale. Mi piacerebbe che fosse non-modale, ma rimanga al di sopra del genitore, e se il genitore è minimizzato, per essere minimizzato con esso.Qt: mantiene la finestra secondaria sopra il genitore anche quando perde lo stato attivo

Se l'utente desidera apportare modifiche in entrambi, dovrebbe essere in grado di, e il bambino non sarebbe chiuso a meno che l'utente non lo chiuda. Il bambino starebbe sempre in cima al genitore - ma non sopra ogni altra cosa.

m_child->show(); 
m_child->activateWindow(); 

I luoghi del bambino sulla parte superiore del genitore di cui sopra, permette il lavoro sul genitore, mentre è stato avviato il bambino ... ma il bambino è nascosto dietro il genitore se perde lo stato attivo.

m_child->show(); 
m_child->activateWindow(); 
m_child->raise(); 

Nessun cambiamento.

Utilizzando

Qt::WindowFlags flags = m_child->windowFlags(); 
m_child->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); 
m_child->show(); 
m_child->activateWindow(); 

il bambino è in cima, come voglio, posso lavorare sul genitore, mentre il bambino è ancora visualizzato in cima ... ma riducendo al minimo il genitore non minimizza il bambino pure , e il bambino rimane in cima a TUTTE le finestre (dovrebbe rimanere solo sopra il genitore)

Come posso creare un effetto "stile cassetta degli attrezzi" - avere il bambino sopra il genitore mentre il genitore è attivo, ma ridurre a icona bambino quando il genitore è ridotto al minimo?

Ho anche sperimentato tutte le finestre, ma consentono al bambino di nascondersi quando perde il fuoco.

risposta

9

È possibile ottenere questo comportamento aggiungendo il flag Qt::Tool al widget della casella degli strumenti e impostando la finestra principale come principale.

Vedi http://doc.qt.io/qt-5/qt.html#WindowType-enum

+0

Grazie! Ho provato la bandiera Qt :: Tool ma non conoscevo il genitore, funziona perfettamente! – Thalia

+1

Per Mac, il comportamento non è quello che voglio - la finestra "strumento" rimane sempre in primo piano, anche quando minimizzo l'app ... Ho provato setAttribute (Qt :: WA_MacAlwaysShowToolWindow, false) ma sembra non fare alcuna differenza .. c'è qualche bandiera che imiterà il comportamento di Windows su mac? – Thalia