2010-06-01 16 views
5

En la aplicación QT que desarrollamos, necesitamos mostrar varias 'ventanas del visor' (para mostrar datos en el plano XY, plano YX, plano XZ y en 3D).Modelo MDI o Dock Windows?

Teníamos la esperanza de utilizar el modelo de aplicación MDI, pero más tarde el cliente solicitó un requisito para arrastrar y ver 'Ventanas del visor' en múltiples escritorios (usando múltiples monitores). Esto no se puede hacer usando el modelo de ventana MDI, porque no podemos mover la ventana MDI fuera de la Ventana principal de la aplicación.

La única forma posible es usar ventanas Dock porque se pueden desacoplar de la ventana de la aplicación principal y pasar a otras computadoras de escritorio, pero las ventanas Dock se usan principalmente para herramientas-paletas o ventanas de utilidades.

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

¿Es una buena práctica utilizar la ventana Base para nuestras necesidades?

+0

¿Ha solucionado el problema? – Beachwalker

+0

sí, simplemente usé QWidgets sin padres. Tengo que administrar un contexto para mantener la lista de Windows (QWidgets) y utilicé este contexto para sincronizarlos. –

Respuesta

3

No utilizaría QDockWindow dado que parece que no usará el área de cliente. Además, no desea acoplarse a los bordes de MainWindow sino que acaba de agregar el widget a MainWindow.

Creo que puede intentar utilizar QWidget múltiple con QGridLayout. Al arrastrar QWidget fuera de MainWindow, simplemente elimine QWidget del diseño. Al arrastrar dentro de MainWindow, agregue QWidget al lugar correcto en QGridLayout. Con este método también puedes cambiar los lugares del widget en la ventana principal.

No sé si es lo suficientemente claro, pero estoy pensando de la misma manera que en QtDesigner cuando arrastro elementos nuevos a un diseño. Al arrastrar widgets, puede ver el lugar donde se agregará al soltar el botón del mouse.

En mi opinión, este método puede ser el que está buscando.

Espero que ayude

+0

muchas gracias por la respuesta! Trataré de implementar de la manera que sugirió. Pero parece que necesita algunos hacks inteligentes. Necesito ir con el modelo SDI con QGridLayout, pero ¿cómo puedo mostrar QWidgets afuera sin un padre? –

+2

Si un widget como no principal, se convierte en una ventana independiente como se explica en la descripción detallada de QWidget: http://doc.qt.nokia.com/4.6/qwidget.html#details –