Qt Objekt / Klasse zu Qt Ui-Datei

9

Dies mag wie eine sehr seltsame Frage erscheinen, aber ist es möglich, ein Qt Designer-Formular ( .ui ) von einem Qt-Objekt zu generieren, sagen Sie etwas, das QWidget ? erbt?

Mein Plan ist es, ein einfaches dynamisches Formular in Code zu erstellen, wenn der Benutzer wählt, was er will, zB Felder, Art des Steuerelements und dann eine .ui Datei ausgeben, damit sie das Layout nach Bedarf anpassen können.

Der Code verwendet dann die QUiLoader -Klasse, um die ui -Datei neu zu laden und die geänderte oder nicht ui -Datei anzuzeigen.

    
Nathan W 17.11.2011, 04:13
quelle

5 Antworten

2

Das Qt-Introspection-Tool GammaRay kann Dialoge von der AUI (zu prüfende Anwendung) in .ui -Dateien speichern Version, IIRC.

    
Marc Mutz - mmutz 09.02.2012 16:22
quelle
1

Da QWidget von QObject erbt, erhält es alle dynamischen Eigenschaften, die QObject bietet. QObjects (und QWidgets) ordnen sich natürlich auch selbst in Bäume ein (siehe QObject :: parent und QObject :: children). Indem Sie dem Baum der Widgets folgen und die Eigenschaften jedes einzelnen Elements abrufen, können Sie eine XML-.ui-Datei generieren, die die grundlegenden Informationen zu jedem Steuerelement enthält.

Das Ausarbeiten der Signal / Slot-Verbindungen von einem vorher festgelegten Formular könnte etwas komplizierter sein, da es außer QObject :: dumpObjectInfo offenbar keine Möglichkeit gibt, Informationen darüber zu erhalten, sondern für das Programm, das Sie beschreiben Ihre Frage ist leicht genug, um sie auf andere Weise zu verfolgen.

    
Tyr 22.11.2011 11:43
quelle
0

Lassen Sie mich nur etwas klarstellen, Qt Designer hat eine WYSIWYG-Benutzeroberfläche, die ein Qt Designer-Formular im XML-Format erstellt, das dann zur Kompilierungszeit in C ++ - Code konvertiert wird. Und du fragst, ob man das rückwärts machen kann?

Ja, ich denke, es ist möglich, da Qt Designer Forms sowieso nur XML sind. Sie können eine Anwendung erstellen, die C ++ - Code akzeptiert, insbesondere den Code, der für die vollständige Deklaration einer Klasse verwendet wird, und dann die EIGENSCHAFTEN der Klasse in ihren entsprechenden XML-Code übersetzen. Dies würde eine Menge Arbeit erfordern, in der ich zu diesem Zeitpunkt den Punkt nicht mehr sehe.

edit: Für dieses Projekt müssten Sie Qt Designer reverse engineeren. aber ja, es ist sehr möglich.

    
Subaru Tashiro 17.12.2011 22:54
quelle
-1

nicht so. Wie Sie sich erinnern, ist die UI-Datei der Quellcode zum Erzeugen des entsprechenden .cpp-Codes bei compilet-me. Gui-Loader ist ein Teil des Point-to-Implementation-Patterns, das hilft, die Kompilierungszeit zu reduzieren.

    
Roman Kr 17.11.2011 08:30
quelle
-1

Sie könnten Qt Designer auch in Ihren eigenen Code einbetten, indem Sie das Designer-Modul verwenden. Sie müssen CONFIG + = Designer zu Ihrer .pro-Datei hinzufügen.

Bitte werfen Sie einen Blick auf das Designer-Modul hier: Ссылка

    
Correa 01.02.2012 03:04
quelle

Tags und Links