2013-10-27 13 views
7

Im Designer, wenn ich mit der rechten Maustaste auf ein Widget klicke, und ich klicke auf Werbung, um dieses Fenster zu erhalten. Siehe den Screenshot unten.Wie verwende ich promote in Qt Designer in pyqt4?

Ich habe diese Funktion noch nie benutzt. Grundsätzlich verwirrt mich die Header-Datei. Wofür ist das? Bedeutet das, dass ich in diesem Fall eine neue Klasse erstellen kann, die QLineEdit erbt und weitere Methoden hinzufügt? Was ist der beworbene Klassenname?

Promote widget

+0

möglich Duplikat [Förderung PyQt Widget] (http://stackoverflow.com/questions/4832695/promote-pyqt-widget) – ekhumoro

Antwort

12

Auf diese Weise können Sie an anderer Stelle definiert eigene Widgets verwenden, die Designer sonst nicht kennen würde.

Zum Beispiel, wenn Sie ein Widget MyLabel von QLabel abgeleitet definiert haben, dann können Sie diese hier definieren und dann nur ein QLabel als Platzhalter in Ihrem ui einfügen und es MyLabel fördern.

Der uic Compiler wird dann schließen die notwendigen Importe/zum Beispiel enthält, wenn Sie mypackage/mycomponent.h als Header-Datei und MyLabel als Klassenname angegeben, dann wird pyuic hinzufügen

from mypackage.mycomponent import MyLabel 

(beachten Sie, wie die .h ignoriert wird, und Schrägstriche . durch pyuic umgewandelt werden Kompatibilität mit python zu halten)

globale umfassen von pyuic ignoriert wird, es wirkt sich nur auf uic (generieren #include "mypackage/mycomponent.h" oder #include <mypackage/mycomponent.h> für C++)

+3

** Diese Magie unergründlich ist schwarz. ** Die Qt (Creator | Designer) UX * muss * explizit die Existenz anderer Sprachen als C++ bestätigen. Die Notwendigkeit, eine C++ - Header-Datei anzugeben, deren Dateityp 'pyuic' und' pysideuic' dann stillschweigend ignoriert werden, ist besonders unverzeihlich. –