2010-06-01 6 views
5

Nell'applicazione QT sviluppiamo abbiamo bisogno di visualizzare più finestre 'Viewer' (per visualizzare i dati in piano XY, piano YX, piano XZ e in 3D).Modello MDI o Windows Dock?

Speravamo di utilizzare il modello di applicazione MDI, ma in seguito il client ha chiesto di trascinare e visualizzare "finestre di visualizzazione" in più desktop (utilizzando più monitor). Questo non può essere fatto usando il modello di finestra MDI, perché non possiamo spostare la finestra MDI fuori dalla finestra principale dell'applicazione.

L'unico modo possibile è utilizzare le finestre Dock perché possono essere sganciate dalla finestra principale dell'applicazione e spostarsi in altri desktop, ma le finestre principali di Dock vengono utilizzate per tavolozze degli strumenti o finestre di utilità.

(http://doc.qt.nokia.com/4.6/qdockwidget.html#details)

E 'una buona pratica di utilizzare la finestra Dock per il nostro fabbisogno?

+0

Forse avete risolto il problema? – Beachwalker

+0

sì, semplicemente utilizzato QWidgets senza genitori. Gestisce un contesto per mantenere l'elenco di Windows (QWidgets) e utilizzato questo contesto per sincronizzarli. –

risposta

3

Non vorrei usare il QDockWindow poiché sembra non utilizzerà l'area client. Inoltre, non si desidera ancorare i bordi MainWindow ma è sufficiente aggiungere il widget a MainWindow.

Penso che si può provare ad usare QWidget multipla con un QGridLayout. Quando si trascina QWidget all'esterno di MainWindow, è sufficiente rimuovere QWidget dal layout. Durante il trascinamento all'interno di MainWindow, aggiungere QWidget nel posto giusto in QGridLayout. Con questo metodo puoi anche cambiare i posti del widget nella finestra principale.

Non so se è abbastanza chiaro, ma sto pensando allo stesso modo in cui si è fatto in QtDesigner durante il trascinamento di nuovi elementi in un layout. Quando trascini i widget puoi vedere il punto in cui verrà aggiunto quando rilascerai il pulsante del mouse.

Nella mia mente questo metodo può essere quello che si sta cercando.

Speranza che aiuta

+0

grazie mille per la risposta! Proverò a implementare il modo in cui hai suggerito. Ma sembra che abbia bisogno di alcuni hack intelligenti. Ho bisogno di andare con il modello SDI con QGridLayout, ma come posso visualizzare QWidgets all'esterno senza un genitore? –

+2

Se un widget come nessun genitore, diventa una sola finestra di supporto come spiegare nella descrizione dettagliata di QWidget: http://doc.qt.nokia.com/4.6/qwidget.html#details –