Seite 1 von 1

[gelöst] Probleme mit TreeWidget

Verfasst: 11. Oktober 2009 22:32
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!

Re: Probleme mit TreeWidget

Verfasst: 11. Oktober 2009 22:51
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

Verfasst: 11. Oktober 2009 23:03
von sea_bear
Verflixt!!!!!! Nun läuft es! Habe ich einfach übersehen!

Vielen Dank!!!!!! :D