Seite 1 von 1
QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 08:42
von ThorstenK
Hallo,
ich habe im Designer ein QWidget mit der per '
Dynamische Eigenschaft hizufügen'
hinzugefügten eigenschaft '
fld_direction' als Integer mit dem wert '
1'.
Im code versuche ich nun die Eigenschaft auszulesen...
Code: Alles auswählen
fld_normal::fld_normal(QWidget *parent) :
QWidget(parent),
ui(new Ui::fld_normal)
{
ui->setupUi(this);
qDebug() << property("fld_direction");
qDebug() << QObject::dynamicPropertyNames();
}
gibt leider weder/noch etwas aus.
Wie komme ich an diese Eigenschaft ?
Mit freundlichem Gruß
Thorsten
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 10:17
von archer
Ich würde es mit versuchen mit
Ansonsten Doku, property() liefert ein QVaraint. Deshalb das toInt().
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 10:30
von ThorstenK
Hallo
archer,
'
ui' hat kein '
property' und ein
gibt wie zu erwarten
QVariant(int, 1) aus.
Im übrigen gibt
Code: Alles auswählen
qDebug() << property("fld_direction").toInt();
qDebug() << property("fld_direction").isValid();
0 und
false aus.
Die Eigenschaft wird also so nicht gefunden.
Danke und Gruß
Thorsten
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 10:40
von archer
ich vergas das Objekt, sorry.
Code: Alles auswählen
qDebug() << ui->myWidget->property("fld_direction").toInt();
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 10:44
von ThorstenK
SOLVED
Die Eigenschaft wird richtig gefunden und angezeigt.
Hatte Sie dem Platzhalter im Hauptfenster zugeordnet.
Eine Frage noch dazu, git es einen vergleichbaren weg
um einem Widget eine Eigenschaft über seine Platzhalter mitzugeben ?
Danke
Thorsten
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 10:54
von archer
Einfach in deinem Quellcode:
Beispiel
Wenn Test nicht da ist, wird es hinzugefügt mit dem Wert true.
Ansonsten wird der vorhandene Wert ersetzt.
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 11:30
von ThorstenK
Um nicht missverstanden zu werden..
Ich habe ein QWidget nebst Klasse als 'fld_normal.ui'.
Ein MainWindow als 'mainwindow.ui' in dem diversen
Widgets via 'Als Platzhalter für benutzerdefinierte ...' das
'fld_normal' zugewiesen wurde.
Die dynamische eigenschaft in 'fld_normal.ui' wird sauber
angezeigt, daher das SOLVED, eigenschaften der Platzhalter
aber nicht.
Die Frage ist nun, kann ich diesen 'Platzhaltern' eigenschaften
zuweisen die vergleichbar funktionieren ?.
Gruß
Thorsten
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 12:29
von archer
Lege die Properties (dynamischen Eigenschaften) der Platzhalter nicht im Designer an sondern in deinem Quellcode.
Code: Alles auswählen
ui->setupUi(this);
ui->myPlaceHolder1->setProperty("PLaceTest", QString("1"));
ui->myPlaceHolder2->setProperty("PLaceTest", QString("5"));
Du kannst diese auch z.B. im Konstruktor deiner Widgets anlegen
Code: Alles auswählen
CWidgetForPlaceHolder1::CWidgetForPlaceHolder1()
{
...
setProperty("PLaceTest", QString("1"));
}
Und zurücklesen
Code: Alles auswählen
ui->myPlaceHolder1->property("PLaceTest").toString();
ui->myPlaceHolder2->property("PLaceTest").toString();
bzw.
innerhalb von CWidgetForPlaceHolder1.
Re: QtDesigner Dynamische Eigenschaften
Verfasst: 26. Januar 2012 19:48
von solarix
ThorstenK hat geschrieben:
Die Frage ist nun, kann ich diesen 'Platzhaltern' eigenschaften
zuweisen die vergleichbar funktionieren ?.
"Dynamische Eigenschaften" sind eine Funktion der Klasse "QObject"... mit anderen Worten: es ist egal, was es für ein Widget ist.. ist es ein QObject (und das sind alle QWidgets), kann es auch dynamische Eigenschaften besitzen. Platzhalter hin oder her..
Lange Rede kurzer Sinn: Warum probierst du es nicht einfach? Ich vermute: das klappt..
hth!