2008-11-25 17 views
19

El QMainWindow es la ventana principal en una aplicación Qt. Por lo general, solo tendría una, pero ¿sería posible tener varias instancias QMainWindow en su aplicación?¿Varias instancias de QMainWindow?

estoy trabajando en la integración de una aplicación de interfaz gráfica de usuario basada en Qt B en otra aplicación GUI basada en Qt Un. Ambas aplicaciones tienen un QMainWindow, y estaba considerando como un primer paso para crear un nuevo QMainWindow que tenga ambas antiguas QMainWindows en pestañas. De esta forma me permitiría concentrarme en el cableado de la GUI B en el backend de A sin tener que cambiar nada en la interfaz de usuario. ¿Es este un enfoque viable, o tienes otras sugerencias?

+0

Estoy en una situación bastante similar, donde necesito 2 QMainWindows. En caso de que hayas tomado esta ruta, ¿tienes una respuesta a la advertencia señalada por @ caleb-huitt-cjhuitt, eso es lo que sucede con la barra de menú en una Mac? –

Respuesta

28

Puede tener tantas instancias QMainWindow como desee. Un QMainWindow es solo un QWidget que proporciona una barra de menú, una barra de herramientas, una barra de estado y un marco de acoplamiento. Pero básicamente es solo un QWidget para que pueda tener tantos como quiera.

Normalmente, solo tiene un solo QMainWindow por motivos de diseño de la GUI, ya que puede ser confuso tener varias ventanas principales. Sin embargo, al implementar aplicaciones como QtAssistant que pueden abrir una nueva instancia de sí mismos, entonces el proceso tiene múltiples ventanas principales.

Lo que sugieres debería funcionar. La ventana con las pestañas no necesitaría ser QMainWindow a menos que también desee agregar una barra de herramientas a esa ventana.

+2

La única advertencia que agregaría es que los menús podrían ser un poco extravagantes si tuvieras que portar a OS X. Tienen un manejo especial para que los menús funcionen en la parte superior de la pantalla, y no sé cómo eso funcionaría con dos ventanas principales en una ventana real. –

+1

Dado que puede tener múltiples QMainWindow en la aplicación, ¿podría usar su marco de acoplamiento dentro de una Subventana de Mdi? ¿Sería eso una buena práctica? – Anonymous

+0

@Anonymous: ¡buena idea! – CapelliC

Cuestiones relacionadas