Pregunta Qt object / class to Qt ui file


Esto puede parecer una pregunta muy extraña, pero es posible generar un formulario Qt Designer (.ui) de un objeto Qt, di algo que hereda QWidget?

Mi plan es crear un formulario dinámico simple en el código, ya que el usuario elige qué cosas quieren, por ejemplo, campos, tipo de control y luego descarga un .ui archivo para que puedan modificar el diseño si es necesario después.

El código luego usará QUiLoader clase para volver a cargar el ui archivar y mostrar el modificado o no ui archivo.


9
2017-11-17 04:13


origen


Respuestas:


La herramienta Qt-Introspection Rayo gamma puede guardar diálogos desde AUI (aplicación bajo inspección) a .ui archivos en su última versión, IIRC.


2
2018-02-09 16:22



Dado que QWidget hereda de QObject, obtiene toda la inspección dinámica de propiedades que proporciona QObject. QObjects (y QWidgets) también se organizan naturalmente en árboles (ver QObject :: parent y QObject :: children). Al seguir el árbol de widgets y obtener las propiedades de cada uno, puede generar un archivo xml .ui que contenga la información básica sobre cada control.

Calcular las conexiones de señal / ranura de una forma preestablecida puede ser un poco más complicado, ya que no parece haber ninguna forma de obtener información sobre ellos además de QObject :: dumpObjectInfo pero para el programa que describe en su pregunta es lo suficientemente fácil como para hacer un seguimiento de ellos de otra manera.


1
2017-11-22 11:43



Deje que solo aclare algo, Qt Designer tiene una interfaz de usuario WYSIWYG que crea un formulario Qt Designer en formato xml, que luego se convierte en código C ++ en tiempo de compilación. ¿Y estás preguntando si uno puede hacer esto al revés?

Sí, creo que es posible, ya que las Qt Designer Forms son solo xml de todos modos. Puede crear una aplicación que acepte código C ++, específicamente el código utilizado para la declaración completa de una clase, luego traduzca las PROPIEDADES de la clase en su código xml correspondiente. Esto implicaría mucho trabajo, en el cual en ese momento, personalmente ya no veo el punto.

editar: este proyecto requeriría que realice ingeniería inversa en Qt Designer. pero sí, es muy posible.


0
2017-12-17 22:54



no de esa manera. Como recordará, UI-file es el código fuente para generar el código .cpp apropiado en compilet-me. Gui-loader es una parte del patrón de punto a implementación, que ayuda a reducir la cantidad de tiempo de compilación.


-1
2017-11-17 08:30



También puede incrustar Qt Designer en su propio código utilizando el módulo de diseñador. Necesita agregar CONFIG + = diseñador a su archivo .pro.

Por favor, eche un vistazo al módulo de diseñador aquí: http://developer.qt.nokia.com/doc/qt-4.8/qtdesigner.html


-1
2018-02-01 03:04