Frage

Ich verbringe diese Ferien damit, zu lernen, Qt-Anwendungen zu schreiben.Ich habe erst vor ein paar Stunden etwas über Qt Designer gelesen und mich gefragt:Was verwenden Leute, die reale Anwendungen in Qt schreiben, zum Entwerfen ihrer GUIs?Wie entwerfen Menschen eigentlich GUIs im Allgemeinen?

Ich für meinen Teil fand, dass das Schreiben des Codes von Hand konzeptionell einfacher war als die Verwendung von Qt Designer, obwohl Designer für komplexe GUIs möglicherweise sinnvoll ist.Große GUIs könnten mit Designer möglich sein, aber mit der Zeit könnte es sehr schwierig werden, sie zu verwalten, da die Komplexität zunimmt (das ist nur meine Meinung).Ich habe auch den AmaroK-Quellcode heruntergeladen, um einen Blick darauf zu werfen, was diese Leute taten, und habe viele Aufrufe von addWidget() und Freunden gefunden, aber keine dieser von Designer erstellten XML-Dateien (abgesehen von:AmaroK muss auf jeder Plattform meine Lieblingsanwendung sein.

Was ist dann der „richtige“ Weg, eine GUI zu erstellen?Designer oder Code?Betrachten wir für diese Diskussion die folgenden Arten von GUIs:

  1. Einfache Dialoge, bei denen nur Eingaben entgegengenommen, Ergebnisse angezeigt und beendet werden müssen.Nehmen wir an, eine Anwendung nimmt eine YouTube-URL und lädt das Video auf die Festplatte des Benutzers herunter.Die Art von Anwendungen, mit denen ein Neuling wahrscheinlich beginnen wird.
  2. GUIs für Fortgeschrittene, wie beispielsweise ein Haftnotizen-Editor mit einigen Symbolleisten-/Menüelementen.Nehmen wir zum Beispiel xPad (http://getxpad.com/).Ich würde sagen, dass die meisten Anwendungen in die Kategorie „Dienstprogramme“ fallen.
  3. Sehr komplexe GUIs, wie AmaroK oder OpenOffice.Man erkennt sie, wenn man sie sieht, weil sie einem die Augen bluten lassen.
War es hilfreich?

Lösung

Unsere Erfahrung mit Designern begann in Qt3.

Qt3

An diesem Punkt Designer war nützlich, vor allem Code zu generieren, die Sie dann in Ihre Anwendung kompilieren würden. Wir begannen zu diesem Zweck verwenden, aber mit allen generierten Code, wenn Sie es bearbeiten, die Sie nicht mehr zurückgehen und regenerieren, ohne Änderungen zu verlieren. Am Ende haben wir nur den generierten Code zu nehmen und von Hand tut alles, von nun an.

Qt4

Qt4 hat Designer deutlich verbessert. Nicht mehr funktioniert es generiert nur Code, aber Sie können in Ihren Designer-Dateien (in xml) und verbinden sie dynamisch auf die laufenden Objekte in Ihrem Programm - nicht jedoch generierten Code, müssen Sie die Elemente in Designer nennen müssen und bleiben mit den Namen Ihren Code nicht zu brechen

.

Meine Einschätzung ist, dass es bei weitem nicht so nützlich wie Interface Builder ist auf Mac OS X, aber an diesem Punkt konnte ich die Designer-Dateien direkt in einem Programm sehen werden.

Wir haben nicht zurück zu Designern seit Qt3, ziehen aber nach wie vor Prototyp verwenden, und Debug-Layout.

Für Ihre Probleme:

  1. Sie könnten wahrscheinlich weg die Standard-Dialoge mit der Verwendung, die Qt bietet. QInputDialog oder wenn Sie QDialog Unterklasse, stellen Sie sicher, dass QButtonDialogBox Ihre Tasten haben das richtige Plattform-Layout.

  2. , um sicherzustellen,
  3. Sie wahrscheinlich etwas mehr beschränkt wie xPad mit eingeschränkter Funktionalität Designern tun könnten.

  4. Ich würde denken, dass Sie so etwas wie Openoffice nur mit Designer schreiben könnte, aber vielleicht ist das nicht der Punkt.

würde ich Designer als ein anderes Werkzeug verwenden, wie Sie Ihren Text-Editor. Sobald Sie die Grenzen finden, versuchen Sie ein anderes Werkzeug für das neue Problem. Ich bin vollkommen einverstanden mit Steve S, dass ein Vorteil des Designers ist, dass jemand anderes, der keinen Programmierer ist kann das Layout tun.

Andere Tipps

Nach meiner Erfahrung mit Qt Designern und anderen Toolkits / UI-Tool:

  • UI-Tools beschleunigen die Arbeit.
  • UI-Tools erleichtern später das Layout zu optimieren.
  • UI-Tools machen es einfacher / möglich für Nicht-Programmierer auf dem UI-Design zu arbeiten.

Die Komplexität kann oft mit in einem UI-Tool durch das Brechen des Designs in mehr UI-Dateien behandelt werden. Fügen Sie kleine logische Gruppen von Komponenten in jeder Datei und behandeln jede Gruppe als ein Widget, das verwendet wird, um die komplette Benutzeroberfläche zu bauen. Qt Designer Konzept der geförderten Widgets können dabei helfen.

habe ich nicht gefunden, dass der Umfang des Projektes einen Unterschied macht. Ihre Erfahrungen können variieren.

Die Dateien mit UI-Tool erstellt (Ich denke, man sich mit der Hand schreiben könnte, wenn man wirklich will) oft dynamisch zur Laufzeit (Qt und GTK + beide bieten diese Funktion) geladen werden können. Dies bedeutet, dass Sie das Layout Änderungen vornehmen können und testen, ohne neu zu kompilieren.

Letztendlich denke ich, dass beide Roh-Code und UI-Tools effektiv sein können. Es hängt wahrscheinlich eine Menge auf die Umwelt, das Toolkit / UI-Tool und natürlich persönliche Präferenz. Ich mag UI-Tools, weil sie mich aufstehen und laufen schnell und später leicht Änderungen ermöglichen.

Die Organisation für die ich arbeite hat vor seiner GUI-Anwendung auf Qt mehrere Jahre portiert. Ich denke, es gibt mehrere Aspekte, die erwähnenswert sind:

  • Arbeiten mit Qt Designer, zumindest zu diesem Zeitpunkt war keine realistische Option: Es gibt zu viele Features waren, die nicht mit Qt Designer getan werden könnte;
  • Konventionen und Struktur, die erhalten werden musste, verhindert die Verwendung von Qt Designer;
  • Wenn Sie ohne Designer gestartet haben, ist es wahrscheinlich schwierig, dorthin zurückzukehren;
  • ist der wichtigste Aspekt, war aber, dass die Programmierer sehr viel Programmierung verwendet wurden vi oder Emacs, anstatt eine GUI-IDE.

Meine eigene Erfahrung, die wieder ca. geht. 4 Jahre, mit Qt3.3, ist das dynamische Verhalten in Dialogen nicht möglich war, in Designer zu verwirklichen.

Nur sagen, die ich geschrieben habe und gepflegt komplexe GUIs in Qt ohne Qt-Designer - nicht, weil Ich mag Qt Designer nicht, sondern weil ich nie dazu gekommen, so zu arbeiten

.

Es ist zum Teil eine Frage des Stils und wo du herkommst: wenn ich auf Qt begann, würde ich schreckliche Erfahrungen von Dreamweaver und Frontpage und andere visuelle HTML-Tools und weit bevorzugt das Schreiben von Code mit Homesite und den Rückgriff auf Photoshop hatte für knifflige Layoutprobleme.

Es gibt eine Gefahr, mit visuellem Code IDEs, die Sie innerhalb der visuellen Tool zu halten versuchen, aber am Ende mit Code zu optimieren, als auch -. In einer Weise, die nicht gut verstanden ist,

Learning iPhone Entwicklung, zum Beispiel, habe ich es frustrierend zu schlagen ‚Magie‘ visuelles Material ( ‚drag aus dem leeren Kreis in den Anschlüssen Inspektoren auf das Objekt im Interface Builder Fenstern ...‘) festgestellt, dass sein würde einfacher (für mich) in einfachen alten Code zu verstehen.

Viel Glück mit Qt - es ist eine große Toolkit, aber verwenden Sie es, und Qt Creator sieht aus wie eine große IDE zu sein

.

Ich möchte hinzufügen, dass einer der Gründe für die Verwendung des Grafikdesigners beispielsweise das Fehlen von Layout-Managern in Win32 war.Es war nur eine absolute Positionierung möglich, und das von Hand zu machen wäre einfach scheiße gewesen.

Seit ich für GUI-Apps von Delphi auf Java umgestiegen bin (im Jahr 2002), habe ich nie mehr Designer eingesetzt.Ich mag Layoutmanager viel mehr.Und ja, Sie erhalten Boilerplate-Code, aber das Verschieben von Objekten in einem UI-Designer kann genauso viel Zeit in Anspruch nehmen wie das Ändern des Boilerplates.Außerdem würde ich mit einer langsamen IDE stecken bleiben;Das gilt für den Java/C#-Fall, OK, während es für Qt (insbesondere Qt4) nicht gilt.Bei Qt3 frage ich mich, warum man den generierten Code bearbeiten sollte – war es nicht möglich, Code in anderen Dateien hinzuzufügen?Aus welchem ​​Grund?

Zu den besprochenen Fällen:1) Handcodierte GUI lässt sich wahrscheinlich schneller schreiben, zumindest wenn Sie Ihre Bibliotheken kennen.Wenn Sie ein Neuling sind und sie nicht kennen, können Sie mit einem Designer möglicherweise Zeit sparen und weniger lernen, da Sie die von Ihnen verwendeten APIs nicht erlernen müssen.Aber „weniger lernen“ ist der Schlüsselfaktor, daher würde ich in beiden Fällen von handcodierter GUI sprechen.

2) Das Schreiben von Code für Menüleisten ist ziemlich nervig.Denken Sie auch an Details wie Beschleuniger usw.Dennoch kommt es darauf an, was man gewohnt ist.Nach einiger Zeit ist es möglicherweise schneller, diesen Standardtext einzugeben, als mit der Maus in den Designer zu zeigen und zu klicken, um alle diese Eigenschaften zu korrigieren, aber nur, wenn Sie wirklich wie in eine Schreibmaschine tippen können (wie bei den Administratoren, bei denen das Eingeben von Unix-Befehlen schneller ist als ... über eine beliebige GUI).

3) Ich würde die Antwort für Fall Nr. 2 auf diesen erweitern.Beachten Sie, dass es bei Win32-Plattformen möglich sein kann, Designer zu verwenden, die Win32-Ressourcen generieren könnte sein schneller zu laden (keine Ahnung davon).

Allerdings möchte ich dort auf ein mögliches Problem bei der Verwendung von Qt Designer hinweisen.Fall aus der Praxis:Es dauerte einige Sekunden (sagen wir 10), einen komplexen Java-Dialog (das Dialogfeld „Einstellungen“ für den Texteditor eines Programmierers) mit vielen Optionen zu laden.Die richtige Lösung wäre gewesen, jede der Registerkarten nur dann zu laden, wenn der Programmierer sie sehen wollte (das wurde mir später klar), indem man jedem Einstellungssatz eine separate Methode hinzufügte, um seine GUI zu erstellen.

Wenn Sie alle Tabs und den Tab-Umschalter gemeinsam mit einem Designer entwerfen, geht das genauso einfach?Ich schätze, es könnte ein ähnliches Beispiel geben, bei dem eine handcodierte GUI Ihnen mehr Flexibilität bietet, und in einer so großen App werden Sie das wahrscheinlich brauchen, und sei es nur zu Optimierungszwecken.

Einer der wichtigsten Vorteile der Designer mit GUIs zu erstellen ist, dass andere Programmierer ändern oder beibehalten Formulare und Widgets einfach ohne die Notwendigkeit in einen komplexen Code zu vertiefen.

Es ist seltsam, dass Sie sagen, das Schreiben von Code ist einfacher als Objekte in einer grafischen Umgebung zu manipulieren. Es ist ein Kinderspiel.
Der Designer ist es Ihnen das Leben leichter und auf lange Sicht zu machen, macht den Code besser verwaltbar. Es ist einfacher, im Designer suchen, um zu sehen, was die UI sieht aus wie dann den Code zu lesen und zu versuchen, sich vorzustellen, wie es aussehen könnte.
Mit aktuellen Qt können Sie tun fast alles, was aus dem Designer und die ganz wenige Dinge, die Sie nicht tun können, können Sie mit wenigen Zeilen Code fix im Konstruktor. Nehmen wir zum Beispiel das einfachste Beispiel - Hinzufügen eines Signal-Slot-Verbindung. Mit Hilfe der Designer es ist so einfach wie ein Doppelklick. Ohne die Designer müssen Sie Nachschlag die korrekte Signatur des Signals gehen, die .h-Datei bearbeiten und dann den Code in der CPP-Datei bearbeiten schreiben. Der Designer ermöglicht es Ihnen, über diese Details zu sein und konzentrieren sich auf das, was wirklich zählt -. Die Funktionalität Ihrer Anwendung

Ich mag zunächst an den Designer drehen GUI-Widgets zu entwickeln. Wie in den anderen Beiträgen erwähnt, seine schneller. Sie erhalten auch eine unmittelbare Rückmeldung zu sehen, ob es „gut aussieht“ und ist für den Benutzer nicht verwirrend. Der Designer ist ein wichtiger Grund, warum ich Qt über andere Toolkits wählen. Ich meist die Designer verwenden, um die Einmal Dialoge zu machen.

Having said that, ich das Hauptfenster und alle komplexen Widgets von Hand. Ich denke, das ist die Art und Weise Trolltech bestimmt. QFormLayout ist eine Klasse, die sie bieten einen Eingabedialog leicht programmatisch erstellen.

By the way, der Designer in Qt 4 ist keine IDE wie die, die sie in Qt hatte 3. Es ist nur ein Editor für Dateien Bearbeitung .ui. Ich mag es so. Das neue Cross-Plattform-IDE wird Qt Creator genannt werden.

Es ist eine alte Post, aber ich würde Ihnen raten, bei Clementine zu suchen - ein Musik-Player, die (glaube ich) von Amarok ableitet. Sie nutzen Qt4 und von dem, was ich sehen kann, gibt es eine ui Ordner im src Ordner des Projekts. In der ui Ordner wie man erwarten könnte sie haben alle möglichen .ui Dateien. Wenn Sie Clementine kompilieren und starten Sie werden sehen, dass die GUI ziemlich komplex und recht schön.

Für mich ist es abhängig, wie viel Logik ist im Widget / GUI verkapselt. Wenn es nur um einfache Formen ist, ziehe ich QtDesigner zu verwenden.

Wenn es komplexe Kontrollen oder Interaktion enthält, neige ich dazu, es zu programmieren.

Wir sind mit dem Qt Designer, wenn jemand eine Gui erstellen muss.
Die Sache ist nur wenig Widgets für bestimmte Aufgaben erstellen (wie Sie in einem Klasse-Design tun würden) und sie dann zusammen bekommen in einen „Eltern-gui“.

Auf diese Weise Ihre Widgets hoch sind wiederverwendbar und können für Guis in einer modularen Art und Weise verwendet werden. Sie müssen nur angeben, welche Signale jedes Widget sendet und welche Slots sie bieten.

Wir zusätzlich schaffen .ui-Dateien, die als während der Build-Prozess erzeugt werden könnte. Bisher war es nicht notwendig, diese Dateien von Hand zu bearbeiten.

Erstellen Sie verschiedene Teile des UI
in verschiedenen .ui Dateien mit QtDesigner,
bringen sie dann zusammen (und fügen Komplikationen) im Code.

Es gibt Dinge, die Sie nicht in Qt Designer tun können, müssen Sie nur in Code tun können,
so Qt Designer sind nur ein (großer) Teil der Werkzeugkette .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top