kpop korea izone drama qt5 qwidget

korea - qwidget pyqt5



¿Cuál es la diferencia entre un QWindow y un QWidget? (1)

El Qt 5.0 proporciona una nueva clase de QWindow . Si bien la documentación de esta clase es bastante completa, no QWindow ver en qué se diferencia exactamente la QWindow de la clase QWidget , y en qué casos preferiría la primera. Ambos proporcionan una forma práctica de visualizar todo tipo de cosas en la pantalla, ambos pueden usar QPainter para dibujar y ambos tienen una forma de interactuar con OpenGL.

En la descripción de la API , dice que:

Normalmente, una aplicación usará QWidget o QQuickView para su interfaz de usuario, y no QWindow directamente.

Así que eso no parece ser una ventaja para la ventana. Además, afirma:

Windows puede potencialmente usar mucha memoria. Una medida habitual es el ancho por la altura por la profundidad del color. Una ventana también puede incluir varios búferes para admitir el búfer doble y triple, así como los búferes de profundidad y de plantilla.

Lo que no parece estar a favor del uso de la QWindow . Entonces, ¿en qué casos lo usarías?


QWindow se ha introducido en Qt 5.0 debido a la división gui / widgets. QWidget ahora vive en su propia biblioteca ( QtWidgets ); fue necesario proporcionar la abstracción de una "ventana de nivel superior" para aplicaciones no basadas en widgets, y así se creó QWindow y vive en QtGui .

Existe una clase completa de aplicaciones no basadas en widgets : todas aquellas que utilizan QtQuick2. No usan la biblioteca QtWidget en absoluto, y de hecho, cuando los usas, siempre estás usando QWindows explícitamente ( QQuickView hereda de QWindow ).

Incluso cuando utiliza widgets, QWindows de nivel superior se crean para usted por el kernel de Qt , que también mantiene las propiedades y las banderas de dichos objetos de QWindow sincronizados con los QWidgets de nivel superior correspondientes. De esta manera, puede manejar los widgets como siempre lo hizo, sin saber nada de QWindow. Las aplicaciones existentes continuarán ejecutándose como se espera, etc. etc.

La única razón (hasta ahora) que he estado utilizando QWindow s explícitamente es para un caso de uso muy específico: dibujar contenido puro de OpenGL . Esto es muy fácil de lograr (al establecer un tipo de superficie OpenGL en la ventana), y le evita traer dependencias adicionales (QtWidgets, QtOpenGL, etc., que tienen un costo en términos de tamaño de biblioteca); permite crear una superficie de dibujo OpenGL en como 10 líneas de código que funcionarán en Linux, Windows, Mac, QNX, "Linux incrustado", y muy probablemente también en Android e iOS. Desde este punto de vista, actúa como un reemplazo perfecto de SDL. :)