Ich habe ein paar Widgets in QtCreator, die von der gleichen Klasse gefördert werden. Allerdings möchte ich, dass sie feine Unterschiede zwischen den beiden haben, daher möchte ich einige Unterschiede in der UI-Datei bestehen, die die hochgestufte Klasse verwenden kann, um sich zu unterscheiden. Dynamische Eigenschaften scheinen der Weg zu sein, also habe ich im UI-Editor jedem promoted Widget eine dynamische Eigenschaft zugewiesen. In dem Code habe ich versucht, die Eigenschaft zugreifen, aber bemerkte es nur scheint Konstruktion verfügbar Post zu sein (wahrscheinlich, weil Qt setProperty()
Aufruf, nachdem das Objekt erstellt wird.Qt: wann kann ich auf dynamische Eigenschaften von qtcreator zugreifen?
MyWidget::MyWidget(QWidget* parent) : QGLWidget(parent)
{
this->property("someProperty").toString(); // returns blank
}
void MyWidget::initializeGL()
{
this->property("someProperty").toString(); // returns string set in UI file
}
Also meine Frage wie nutzen Menschen diese Eigenschaften für Konstruktor Ich könnte das einfach in initializeGL tun, aber das scheint merkwürdig, da diese Eigenschaften nicht mit der Initialisierung von OpenGL in Verbindung stehen. Ich könnte mir vorstellen, dass ich auch eine Verbindung mit dem geänderten Signal der Eigenschaft herstellen könnte dies?
Ich habe Ihre Antwort als richtig markiert, weil es funktioniert, aber ich endete mit einem anderen Ansatz. Ich habe gerade dünne Unterklassen erstellt, die gerade diese Eigenschaften hatten, so dass sie zum Zeitpunkt der Erstellung verfügbar waren und diese in Qt Creator hochgestuft wurden. Schien sauberer als Eigenschaften in der ui-Datei zu haben und sich mit einer anderen init-Funktion beschäftigen zu müssen. – voodoogiant
Definitiv der bessere Ansatz. Ich war auf einer Boulevardzeitung und ging wegen der Tippgeschwindigkeit für das unmittelbare Problem. –