¿Múltiples instancias de QMainWindow?

2 minutos de lectura

avatar de usuario de andreas buykx
Andreas Buykx

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

Estoy trabajando en la integración de una aplicación GUI basada en Qt B en otra aplicación GUI basada en Qt A. Ambas aplicaciones tienen una QMainWindowy estaba considerando como primer paso crear un nuevo QMainWindow que tiene los dos viejos QMainWindows en pestañas. De esa manera, me permitiría concentrarme en conectar el backend de la GUI B al backend de A sin tener que cambiar nada en la propia interfaz de usuario. ¿Es este un enfoque viable o tiene otras sugerencias?

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

    – SB

    5 de agosto de 2011 a las 5:25


Avatar de usuario de David Dibben
david dibben

Puedes tener tantos QMainWindow instancias que desee. A 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 sólo un QWidget para que puedas tener tantos como quieras.

Normalmente solo tienes un solo QMainWindow por motivos de diseño de la GUI, ya que puede resultar 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 un QMainWindow a menos que también desee agregar una barra de herramientas a esa ventana.

  • La única advertencia que agregaría es que los menús pueden volverse un poco raros si tuviera 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.

    – Caleb Huitt – cjhuitt

    26 de noviembre de 2008 a las 15:49

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

    – Anónimo

    19 de marzo de 2012 a las 13:52

  • @Anónimo: ¡buena idea!

    – CapelliC

    02/08/2014 a las 15:31

  • ¿Cómo aparecen estas sub-QMainWindow(s) en la ventana principal de la aplicación? Cómo se organizan: como las ventanas MDI, se superponen entre sí o es necesario colocarlos en algún contenedor como un widget de pestaña o un widget apilado, o son independientes, ¿cómo? PD Encontré la respuesta aquí: stackoverflow.com/a/11860378/630169 y aquí foro.qt.io/topic/31841/…necesita usar ventana->setWindowFlags(Qt::Widget);

    – Aleksey Kontsevich

    29 de marzo de 2016 a las 1:08


¿Ha sido útil esta solución?