2016-07-06 14 views
0

Ich versuche herauszufinden, wie man ein benutzerdefiniertes Widget zu Qt Designer hinzufügen kann. Bis jetzt war ich erfolglos. Sehr neu in Qt. Ich betreibe Qt 4.8.6. Ich weiß, dass es eine neuere Version gibt, aber aufgrund von Projektbeschränkungen muss ich bei dieser bleiben. Im Wesentlichen muss ich eine Hex-Drehfeldbox hinzufügen, d. H. Eine Spinbox, die in Hex statt in Dezimalzahlen zählt. Ich habe sogar code that implements it gefunden. Es erklärt how to integrate it into Qt Designer, aber es wird für Version 3 erklärt. Kann jemand Hilfe anbieten?Wie man ein benutzerdefiniertes Widget zu Qt hinzufügt 4.8.6

Jede Hilfe sehr

geschätzt
+0

Es ist alles dokumentiert, und es gibt Beispiele in der Dokumentation, die mit Qt 4 kommt. –

Antwort

1

Lesen Sie mehr über creating designer widgets und using them, aber kurz:

  • Subclass QDesignerCustomWidgetInterface Ihre benutzerdefinierte Designer-Plugin für die benutzerdefinierte Widget
  • Erstellen erstellen und Ihre Designer installieren
  • Plugin
  • Informieren Sie den Designer über den Speicherort Ihres Plugins oder stellen Sie sicher, dass er unter $QTDIR/plugins/designer
  • installiert ist

Es gibt auch an example zu folgen.

0

Here ist eine Dokumentation. Kurz gesagt, fügen Sie einfach ein beliebiges Widget (z. B. QSpinBox, um es schön im Designer zu zeichnen) zu Ihrem Formular hinzu und konvertieren Sie es in das benötigte.

0

Um ein eigenes Widget Qt Designer fügen Sie einfach die Schritte folgen:

  1. In Qt Designer ein neues Widget File-> New-> Widget erstellen.
  2. für diesen Widget UI usw. hinzufügen und speichern -> -> MyWidget.ui
  3. eine Klasse "MyWidgetHandler" Erstellen dieses Widget in einem MyWidgetHandler.h & cpp
  4. In Ihrem Mainwindow/Dialog, wo immer zu handhaben Wenn Sie dieses Widget anzeigen möchten, fügen Sie im Bereich "Container" des Designers ein "Widget" hinzu.

    enter image description here

  5. nun mit der rechten Maustaste auf das "Widget" Container Sie gerade hinzugefügt haben, und klicken Sie "Förderung to ..."

  6. Dies sollte ein Dialog. Sie können hier die Basisklasse auswählen, um Eigenschaften in Ihrem Fall QComboBox zu erben, oder einfach die QWidget-Klasse auswählen.
  7. Geben Sie als Nächstes den vollständigen Klassennamen ein, z. B. mit: namespaces: "blah :: MyWidgetHandler"
  8. Fügen Sie im Abschnitt Headerdatei einfach den Pfad zur Headerdatei für diese Klasse hinzu. Dies sollte ein auflösbarer Pfad sein. ZB: "UI/MyWidgetHandler.h" oder "C: /UI/MyWidgetHandler.h"
  9. Now "Fördern" klicken und Ihre MainWindow.ui
  10. Das soll jetzt Ihre benutzerdefinierten Klassentyp zB Show-Editor sparen: blah :: MyWidgetHandler. und die Eigenschaften der ausgewählten Basisklasse.
  11. Vergessen Sie nicht, die Benutzeroberfläche in Ihrer Handler-Klasse einzurichten und Header in den Mainwindow-Handler aufzunehmen.

Prost !!!

+0

Was ist, wenn meine Benutzeroberfläche genau die gleiche wie für QSpinBox ist? Wie gehe ich vor? – flashburn

+0

In diesem Fall: - überspringen Sie Schritt 1 und 2 - in Schritt 3 sollte myWidgetHandler von QSpinBox abgeleitet werden. - Sie können die QSpinbox-Methoden wie gewünscht in der Implementierung überschreiben. - Denken Sie daran, dass diese benutzerdefinierte Klasse im Haupt-UI-Handler durch den Objektnamen aufgerufen werden kann, siehe angehängtes Bild in Punkt 10 in der ursprünglichen Antwort. – Zaid

Verwandte Themen