Seite 1 von 1
[gelöst] QGroupBox mit dynamischen Inhalt
Verfasst: 23. Mai 2005 00:40
von Wede
Hallo,
ich habe das Problem das ich eine GroupBox mit dynamischen Inhalt füllen will. Der Inhalt sind verschiedene QLabels welche mit Strings aus einer Datenbank gefüttert werden.
Die zuweisung klappt auch soweit ganz gut beim ersten mal. Jedoch wenn ich Änderungen an der Datenbank vornehme sollten auch die Labels angepasst werden. Z.B. sollen aus drei angezeigten Datensätzen 2 werden, und dann sollen auch nur 2 angezeigt werden, jedoch klappt genau dieses nicht.
Ich benutze als Parent für die GroupBox ein Widget, welches zu einem TabWidget gehört.
Die GroupBox ist in einer eigenen Klasse realisiert. Habe schon mit showEvent und hideEvent rumgespielt, jedoch ohne Erfolg.
Kann mir jemand weiterhelfen?
Gruß
Wede
Verfasst: 23. Mai 2005 08:41
von FlorianBecker
Wenn ich das richtig verstehe:
1. Du machst ein Fenster auf, mit einer ComboBox die Daten aus einer Datenbank enthält.
2. Du änderst die Datenbankeinträge
3. Du machst nix anderes und in deinem Programm ändert sich nichts!?
Mh, da würde ich ja glatt einmal sagen, wie soll das denn auch gehen. Wenn eine Änderung kommt und du etwas neues brauchst, musst du dir eine Funktion bauen, die dann wenn du Sie brauchst aufgerufen wird.
Etwas nach Pos 2 muss passieren, dass deine Änderungen durchführt.
Verfasst: 23. Mai 2005 11:24
von Wede
Code: Alles auswählen
while(medikamentenCursor->next())
{
new QLabel(medikamentenCursor->value("name").toString(), this);
new QLabel(medikamentenCursor->value("bezeichnung").toString(), this);
new QLabel("0" + medikamentenCursor->value("verfall").toString(), this);
}
Dies soll passieren! der Cursor ist Variabel, d.h. er kann mal 5 Datensätze aber auh malnur 1 beinhalten. Das Parent für diese Labels ist eine
GroupBox
Diese GroupBox ist zu sehen auf dem ersten Tab. Wenn ich nun auf einen anderen Tab wechsle, da dann was an der Datenbank ändere, und dann wieder zum ersten Tab wechsle möchte ich das die GroupBox irgendwie aktualisiert wird, d.h die alten Label sollen weg und die neuen sollen geschrieben werden. Ich weiß aber leider nicht wie ich dies realisieren kann. habe schon mit dem showEvent und hideEvent hantiert jedoch werden die alten Labels nicht zerstört.
Ich hoffe das ich mich jetzt etwas besser ausgedrückt habe.[/b][/code]
Verfasst: 23. Mai 2005 11:56
von FlorianBecker
Nicht wirklich.
ComboBox leeren:
http://doc.trolltech.com/3.3/qcombobox.html#clear
Bei Tabwechsel mit einem SIGNAL eine Aktion ausführen:
Code: Alles auswählen
connect( tabWidget, SIGNAL(currentChanged(QWidget *widget ) ), this, SLOT(slotComboboxNeu(QWidget *widget ) ) );
http://doc.trolltech.com/3.3/qtabwidget ... entChanged
Code: Alles auswählen
slotComboboxNeu(QWidget *widget ) {
if ( widget == widgetMitderComboBox ){
// tue hier while mit Items füllen.
}
}
Verfasst: 23. Mai 2005 15:40
von Wede
Danke für die Hilfe.
Aber mit der ComboBox habe ich keine Probleme sodern mit einer QGroupBox
Verfasst: 23. Mai 2005 15:44
von FlorianBecker
Naja, das ist exact die gleiche Lösung.
Verfasst: 24. Mai 2005 14:38
von Wede
Nein ist es leider nicht!
QGroupBox (ist von QFrame abgeleitet) hat keine clear funktion.
Habe es jetzt anders gelöst. Schriebe die Daten in einen HTML String und gebe sie nur mittels eines Labels aus. bei currentchanged desTabWidgets durchlaufe ich die Erfassung der Daten neu und setze den Text des labels neu.
Danke für die hilfe
Wede
Verfasst: 24. Mai 2005 14:40
von FlorianBecker
Ja, hast Recht.
Erst schlampig gelesen und dann noch mit einem Widget verwechselt. Ja, GroupBox ist eine Art Layout.
Aber schön das es gelöst ist.