[gelöst] Probleme mit TreeWidget

Alles rund um die Programmierung mit Qt
Antworten
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

[gelöst] Probleme mit TreeWidget

Beitrag von sea_bear »

Moin moin!
Ich habe da mal ein, hoffentlich kleines, Problem. Und zwar versuche ich Daten aus einer Datenbanktabelle in einem TreeWidget darzustellen.
Dabei sollen alle Datensätze die die gleiche Kategorie besitzen, dort als Child eingefügt werden.
Also ungefähr so:

Code: Alles auswählen

/-
 |-Kategorie 1
 |  |- Eintrag 1
 |  |- Eintrag 2
 |  |- Eintrag 3
 |- Kategorie 2
    |- Eintrag 4
    |- Eintrag 5

Leider passiert aber nun folgenes:

Code: Alles auswählen

/-
 |-Kategorie 1
 |  |- Eintrag 1
 |  |- Eintrag 2
 |  |- Eintrag 3
 |  |- Eintrag 4
 |  |- Eintrag 5
 |- Kategorie 2
Was mache ich falsch?

Code: Alles auswählen

void zForm::on_pushButton_clicked()
{
 QString backupKategorie;
 Zu_treeWidget->clear();
 KZuDatabase.first();
 QTreeWidgetItem *col = new QTreeWidgetItem(Zu_treeWidget);
 col->setText(1,KZuDatabase.getKategorie());
 backupKategorie = KZuDatabase.getKategorie();
 QTreeWidgetItem *col1 = new QTreeWidgetItem(col);
 col1->setText(0,KZuDatabase.getID());
 col1->setText(2,KZuDatabase.getName());
  while(KZuDatabase.next())
  {
   if (KZuDatabase.getKategorie() != backupKategorie)
   {
    QTreeWidgetItem *col = new QTreeWidgetItem(Zu_treeWidget);
    col->setText(1,KZuDatabase.getKategorie());
    backupKategorie = KZuDatabase.getKategorie();
   }
   QTreeWidgetItem *col1 = new QTreeWidgetItem(col);
   col1->setText(0,KZuDatabase.getID());
   col1->setText(2,KZuDatabase.getName());
  }
}
Bin für jede Hilfe Dankbar!
Zuletzt geändert von sea_bear am 11. Oktober 2009 23:04, insgesamt 1-mal geändert.
mummy
Beiträge: 4
Registriert: 22. April 2008 22:53

Re: Probleme mit TreeWidget

Beitrag von mummy »

sea_bear hat geschrieben:...

Was mache ich falsch?

Code: Alles auswählen

void zForm::on_pushButton_clicked()
{
 QString backupKategorie;
 Zu_treeWidget->clear();
 KZuDatabase.first();
-->QTreeWidgetItem *col = new QTreeWidgetItem(Zu_treeWidget);
 col->setText(1,KZuDatabase.getKategorie());
 backupKategorie = KZuDatabase.getKategorie();
 QTreeWidgetItem *col1 = new QTreeWidgetItem(col);
 col1->setText(0,KZuDatabase.getID());
 col1->setText(2,KZuDatabase.getName());
  while(KZuDatabase.next())
  {
   if (KZuDatabase.getKategorie() != backupKategorie)
   {
-->QTreeWidgetItem *col = new QTreeWidgetItem(Zu_treeWidget);
    col->setText(1,KZuDatabase.getKategorie());
    backupKategorie = KZuDatabase.getKategorie();
   }
   QTreeWidgetItem *col1 = new QTreeWidgetItem(col);
   col1->setText(0,KZuDatabase.getID());
   col1->setText(2,KZuDatabase.getName());
  }
}
Bin für jede Hilfe Dankbar!
Hallo,

das 2. QTreeWidgetItem ist eine lokale deklaration und nur innerhalb der Klammer gültig. Deshalb wird für col1 immer das 1. QTreeWidgetItem verwendet.
Vorschlag :

Code: Alles auswählen

void zForm::on_pushButton_clicked()
{
 QString backupKategorie;
 Zu_treeWidget->clear();
 KZuDatabase.first();
 QTreeWidgetItem *col = new QTreeWidgetItem(Zu_treeWidget);
 col->setText(1,KZuDatabase.getKategorie());
 backupKategorie = KZuDatabase.getKategorie();
 [b]QTreeWidgetItem[/b] *col1 = new QTreeWidgetItem(col);
 col1->setText(0,KZuDatabase.getID());
 col1->setText(2,KZuDatabase.getName());
  while(KZuDatabase.next())
  {
   if (KZuDatabase.getKategorie() != backupKategorie)
   {
    col = new QTreeWidgetItem(Zu_treeWidget);
    col->setText(1,KZuDatabase.getKategorie());
    backupKategorie = KZuDatabase.getKategorie();
   }
   QTreeWidgetItem *col1 = new QTreeWidgetItem(col);
   col1->setText(0,KZuDatabase.getID());
   col1->setText(2,KZuDatabase.getName());
  }
}
Bye
sea_bear
Beiträge: 61
Registriert: 9. Oktober 2005 16:40
Wohnort: Schortens

Beitrag von sea_bear »

Verflixt!!!!!! Nun läuft es! Habe ich einfach übersehen!

Vielen Dank!!!!!! :D
Antworten