[gelöst] QGroupBox mit dynamischen Inhalt

Alles rund um die Programmierung mit Qt
Antworten
Wede
Beiträge: 4
Registriert: 23. Mai 2005 00:26

[gelöst] QGroupBox mit dynamischen Inhalt

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Wede
Beiträge: 4
Registriert: 23. Mai 2005 00:26

Beitrag 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]
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Nicht wirklich.

ComboBox leeren:

Code: Alles auswählen

comboxBox -> clear();
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.
  }
}
Wede
Beiträge: 4
Registriert: 23. Mai 2005 00:26

Beitrag von Wede »

Danke für die Hilfe.
Aber mit der ComboBox habe ich keine Probleme sodern mit einer QGroupBox
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Naja, das ist exact die gleiche Lösung.
Wede
Beiträge: 4
Registriert: 23. Mai 2005 00:26

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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.
Antworten