Frage

Jedes Mal, wenn ich ein Projekt mit einigen grafischen Toolkit starten, eine der ersten Konflikte geschehen mit der Entscheidung, wie mit der visuellen Gestaltung und dem Widget-Layout umgehen: Ein grafisches Werkzeug oder Handprogrammierung

Dies ist eine ziemlich heikle / subjektive Frage, weil die meisten Menschen auf persönliche Präferenz basiert entscheiden. Es hängt auch stark von der Qualität des grafischen Werkzeugs. In diesem Fall würde Ich mag nur auf der neuesten Version der QT-Bibliothek konzentrieren. Ich beabsichtige nicht, zu diskutieren, welche Methode besser ist. Ich bin davon überzeugt, dass die beste Antwort ist. Hängt vom Projekt

Was ich will, ist ein Hinweis auf einen guten nicht voreingenommen Artikel, basierte auf Erfahrung nach mehreren Projekten. Der Artikel sollte beschreibt nur die Vor- und Nachteile beiden Möglichkeiten

War es hilfreich?

Lösung

Ich begann mit allem, was von Hand codiert tun, und in der letzten Zeit haben für die meisten Formen zur Verwendung von Qt Designer worden wechseln. Hier sind einige Vorteile für jede Position:

Verwendung von Qt Designer

  • Die größte Zeitersparnis für mich ist die Verwaltung komplexer Layouts; es spart ein Los langwierige Codierung. Einfach (sehr grob) ordnen Sie Ihre Widgets, markieren Sie diese und die rechte Maustaste, und sie in der richtigen Art von Layout setzen. Gerade als Layout verschachtelt werden, so ist so viel einfacher.
  • Es neigt dazu, Ihre Implementierungsdateien sauberer zu halten, anstatt sie mit allen Textlayoutcode zu füllen. Ich bin Typ-A, so dass ich so.
  • Wenn Sie Ihre Anwendung übersetzen, es möglich ist, Ihre Übersetzer die .ui Dateien zu senden, damit sie sehen auf der GUI, wo der Text sie übersetzen sein. (Vorausgesetzt, sie Qt Linguist verwenden.)

Hand-Codierung

  • Kontrolle. Wenn Sie ein Layout, in dem Sie instanziieren müssen / initialisieren die Kontrollen in einer ganz bestimmten Reihenfolge oder dynamisch erstellen die Kontrollen auf der Grundlage anderer Kriterien (Datenbanksuche, etc.), ist dies der einfachste Weg ist.
  • Wenn Sie eigene Widgets haben, können Sie Art-of-Art-Bedienung der Designer, Hinzufügen der nächsten integrierten in QWidget, aus denen Ihre Klasse abgeleitet und „Upgrade“ es dann. Aber Sie werden nicht eine Vorschau Ihres Widget sehen, wenn Sie es ein Designer-Plugin in einem separaten Projekt zu machen, die Art und Weise für die meisten Anwendungsfälle zu viel Arbeit ist.
  • Wenn Sie eigene Widgets haben, die Parameter in ihrem Konstruktor über den optionalen QWidget Eltern nehmen, Designer kann nicht damit umgehen. Sie haben keine andere Wahl, dass die Kontrolle manuell hinzuzufügen.

Sonstiges

  • I nicht verwenden, um die Auto-Connect-SCHLITZE und SIGNALE verfügt (basierend auf Namenskonvention wie „on_my_button_clicked“.) Habe ich gefunden, dass ich fast ausnahmslos diese Verbindung bei einer aufgerichteten bestimmte Zeit, nicht, wenn Qt tut es für mich.
  • Für QWizard Formen habe ich festgestellt, dass ich eine andere UI-Datei für jede Seite zu verwenden. Sie können alles in einem tun, aber es wird sehr umständlich zwischen den Seiten in jeder Art von kundenspezifischen Art und Weise zu kommunizieren.

Insgesamt beginne ich mit Qt Designer und lassen Sie es mich nehmen, so weit wie möglich, dann von Hand Code es von dort. Das ist eine schöne Sache, zu wissen, was Qt Designer erzeugt -. Es ist nur eine andere Klasse, die ein Mitglied Ihrer Klasse wird, und Sie können darauf zugreifen und manipulieren, um sie, wie Sie benötigen

Andere Tipps

ist meine Antwort auf zwei Jahren mit der Entwicklung der Biochemie-Anwendungen mit PyQt4 (Python-Bindings zu Qt 4) und OpenGL. Ich habe nicht C ++ Qt getan, weil wir nur C ++ verwendet für leistungskritische Algorithmen. Das sei gesagt, stark die PyQt4 API Qt4 ähnelt, so viel hier noch gilt.

Qt Designer

  • Gute
    • Erforschung. Entdecken Sie, was Widgets zur Verfügung stehen, die Namen für die Widgets, welche Eigenschaften Sie für jeden Satz kann, etc.
    • Enforces Trennung von UI-Logik von Anwendungslogik.
  • Bad
    • Wenn Sie Widgets zur Laufzeit hinzuzufügen oder zu entfernen, müssen Sie diese Logik im Code haben. Ich denke, es ist eine schlechte Idee, Ihre UI-Logik an zwei Stellen zu setzen.
    • Änderungen an verschachtelten Layouts. Wenn ein Layout keine Widgets in ihm, es zusammenbricht, und es kann ein Widget per Drag & Drop in die gewünschte Position.
    • wirklich schwer

Hand Codierung

  • Gut

    • Schnell, wenn Sie sind sehr vertraut mit Qt.
    • Die beste Wahl, wenn Sie brauchen, um hinzuzufügen oder zu entfernen Widgets zur Laufzeit.
    • Einfacher als Qt Designer, wenn Sie Ihre eigenen Widgets haben.
    • Mit Disziplin, können Sie immer noch getrenntes UI-Layout von Verhalten. setzen Sie Ihren Code einfach zu erstellen und die Layout-Widgets in einem Ort, und Ihren Code Satz Signale und Slots in einem anderen Ort.
  • Bad

    • langsam, wenn Sie neu in Qt.
    • Does nicht erzwingen Trennung von Layout von Verhalten.

Tipp:

  • Springen Sie nicht einfach in Ihre Fenster zu schaffen. Beginnen Sie mit dem schnell mehr möglichen Ausführungen, entweder auf Papier skizziert oder ein Tool wie Balsamiq Mockups verwenden. Obwohl Sie dies in Qt Designer tun könnte, ich glaube, es ist zu verlockend, viel Zeit damit zu verbringen, Ihre Fenster genau richtig aussehen zu bekommen, bevor Sie selbst entschieden haben, ob es die beste Entwurf ist.

  • Wenn Sie Qt Designer verwenden für PyQt, Sie haben den zusätzlichen Schritt pyuic4 für den Betrieb Ihrer * .ui Dateien in Python-Source-Dateien zu kompilieren. Ich fand es einfach, diesen Schritt zu vergessen, und meinen Kopf kratzt für eine Sekunde, warum meine Änderungen nicht funktioniert haben.

  • Wenn Sie Ihre UI von Hand kodieren, schlage ich vor, Ihren Layout-Code an einem Ort und Ihre Signale und Slots an anderer Stelle setzen. Dadurch ist es einfacher, die Art und Weise Ihre Widgets auf einem Fenster angeordnet sind, zu ändern, ohne irgendwelche Ihrer Anwendungslogik zu beeinflussen. Oder Sie können ein bestimmtes Verhalten ändern, ohne durch das ganze Layout-Code waten.

Genießen Sie Qt! Jetzt, wo ich bin mit Java Swing für die Arbeit, ich vermisse es.

Ich neige dazu, das Layout Dialoge die Designer verwenden, aber ich alles tun, die Event-Handling Sachen im Hauptcode. Ich mache auch alle wichtigen Fenster, Symbolleisten, Menüs in direkter Code.

Der Designer ist nur frustrierend - schade, da anständige Drag & Drop-Sizer Designern sind seit mehr als einem Jahrzehnt um

Es hängt von der Anzahl der verschiedenen Fenster / Paneele Sie für Ihre Anwendung benötigen. Wenn die Zahl klein ist, ein grafisches Tool verwenden. Es ist viel schneller ein paar Fenster perfekt gestaltet zu bekommen. Wenn die Zahl groß ist, kann das grafische Tool (und soll) nur für Prototypen verwendet werden. Sie müssen die Layout-Code zu können anwendungsweite Änderungen zu akzeptablen Kosten machen.

Das umfasst das Erstellen eines Modells, wie die Benutzeroberfläche der Anwendung funktioniert und dynamisch das Hinzufügen und Widgets zur Laufzeit zu entfernen. Für ein hervorragendes Beispiel für ein solches Modell (in einer anderen Umgebung), werfen Sie einen Blick auf die Glamourmodel für den Objektbrowser zu schaffen.

Ich lehne den Vorschlag, dass es schwierig ist / subjektives (zumindest mehr als andere Entwicklungsentscheidungen). Es ist leicht, mit den Kriterien zu kommen, zu entscheiden, auf. Persönliche Erfahrungen und Vorlieben sind wichtig für die, wie sie sich entscheiden, wenn die Anzahl der verschiedenen Fenster sollte klein betrachtet werden. Das gleiche gilt für Werkzeugqualität.

Ich benutze eine Kombination aus beidem:

  1. I für x, y-Koordinaten finden, Designer ist der Weg zu gehen.

  2. Viele der anderen UI-Eigenschaften etc. können in Ihrem Code festgelegt werden.

Ich denke, versuche UI vollständig von Hand-Codierung zu tun wäre ein sehr zeitaufwendiges Projekt. Es ist nicht so einfach, wie HTML-Tabellen einrichten.

Ja Version 4 ist schlecht, aber die Leute bei der Arbeit, die 3-Version verwendet hat gesagt, es ist wirklich schlecht. Viele abstürzt.

ich, zusammen mit meinen Kolleginnen und QTers, hoffen wirklich, dass Version 5 wird eine Verbesserung.

Ich weiß, dass dies eine alte Frage, aber ich hoffe, das hilft! Ein Mann Erfahrung.

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