BSW
23-08-2004, 15:09
Ich hab Probleme mit einem Listview
DasListview sollte so aussehen
Text1
+Text2
++Text3.1
++Text3.2
++Text3.3
Sie sieht aber so aus:
Text1
+Text2
++Text3.1
+++Text3.2
++++Text3.3
Was habe ich in meinem Code falschgemacht?
Ich hab eine Liste erstellt ung gehe diese mit einer for-Schleife mit dem Parameter list.at(i) durch!
Vielleicht kann mir hier einer helfen? Ich bin ratlos :confused:
QPtrList<CicdNode> list;
list.setAutoDelete( TRUE );
list.append( new CicdNode(&test,"Symptome und abnorme ...","Kapitel 9",1,0) );
list.append( new CicdNode(&test,"Allgemeinsymptome","R50",0,2) );
list.append( new CicdNode(&test,"Fieber unbekanter Ursache","R50.-",0,0) );
list.append( new CicdNode(&test,"Fieber mit Schüttelfrost","R50.0",0,0) );
list.append( new CicdNode(&test,"Anhaltendes Fieber","R50.1",0,0) );
list.append( new CicdNode(&test,"Fieber, nicht näher bezeichnet","R50.9",0,0) );
ICD10LView->clear();
ICD10LView->setSorting(-1);
ICD10LView->setRootIsDecorated( TRUE );
for (uint i = 0; i< list.count();++i)
{
if ( list.at(i) )
{
if( ( (list.at(i)->isSymptom==2) || (list.at(i)->isSymptom==0) ) && (list.at(i)->isDisease!=1) )
{
if((ICD10LView->currentItem() == NULL) )
{
QListViewItem *p_item = new QListViewItem( ICD10LView, list.at(i)->text, list.at(i)->code );
p_item->setOpen( TRUE );
}
else
{
if(list.at(i)->isSymptom < list.at(i-1)->isSymptom)
{
QMessageBox::critical( this, "ERROR","Erstes Child erstellen");
QListViewItem *sub_item = new QListViewItem( ICD10LView->currentItem(), 0);
sub_item->setText(0, list.at(i)->text);
sub_item->setText(1, list.at(i)->code);
sub_item->setOpen( TRUE );
}
//Kinder beim ersten Kind einfügen
else if( (list.at(i)->isSymptom == list.at(i-1)->isSymptom) && i==3)
{
QMessageBox::critical( this, "ERROR","List = List-1");
QListViewItem *sub_item2 = new QListViewItem( ICD10LView->lastItem()/*ICD10LView->currentItem()*/, 0/*ICD10LView->lastItem()*/ );
sub_item2->setText(0, list.at(i)->text);
sub_item2->setText(1, list.at(i)->code);
}
else
{
QMessageBox::critical( this, "ERROR","List = List-1 new S3");
QListViewItem *sub_item3 = new QListViewItem( ICD10LView->lastItem()/**/, ICD10LView->lastItem() );
sub_item3->setText(0, list.at(i)->text);
sub_item3->setText(1, list.at(i)->code);
}
}
}
}
}
DasListview sollte so aussehen
Text1
+Text2
++Text3.1
++Text3.2
++Text3.3
Sie sieht aber so aus:
Text1
+Text2
++Text3.1
+++Text3.2
++++Text3.3
Was habe ich in meinem Code falschgemacht?
Ich hab eine Liste erstellt ung gehe diese mit einer for-Schleife mit dem Parameter list.at(i) durch!
Vielleicht kann mir hier einer helfen? Ich bin ratlos :confused:
QPtrList<CicdNode> list;
list.setAutoDelete( TRUE );
list.append( new CicdNode(&test,"Symptome und abnorme ...","Kapitel 9",1,0) );
list.append( new CicdNode(&test,"Allgemeinsymptome","R50",0,2) );
list.append( new CicdNode(&test,"Fieber unbekanter Ursache","R50.-",0,0) );
list.append( new CicdNode(&test,"Fieber mit Schüttelfrost","R50.0",0,0) );
list.append( new CicdNode(&test,"Anhaltendes Fieber","R50.1",0,0) );
list.append( new CicdNode(&test,"Fieber, nicht näher bezeichnet","R50.9",0,0) );
ICD10LView->clear();
ICD10LView->setSorting(-1);
ICD10LView->setRootIsDecorated( TRUE );
for (uint i = 0; i< list.count();++i)
{
if ( list.at(i) )
{
if( ( (list.at(i)->isSymptom==2) || (list.at(i)->isSymptom==0) ) && (list.at(i)->isDisease!=1) )
{
if((ICD10LView->currentItem() == NULL) )
{
QListViewItem *p_item = new QListViewItem( ICD10LView, list.at(i)->text, list.at(i)->code );
p_item->setOpen( TRUE );
}
else
{
if(list.at(i)->isSymptom < list.at(i-1)->isSymptom)
{
QMessageBox::critical( this, "ERROR","Erstes Child erstellen");
QListViewItem *sub_item = new QListViewItem( ICD10LView->currentItem(), 0);
sub_item->setText(0, list.at(i)->text);
sub_item->setText(1, list.at(i)->code);
sub_item->setOpen( TRUE );
}
//Kinder beim ersten Kind einfügen
else if( (list.at(i)->isSymptom == list.at(i-1)->isSymptom) && i==3)
{
QMessageBox::critical( this, "ERROR","List = List-1");
QListViewItem *sub_item2 = new QListViewItem( ICD10LView->lastItem()/*ICD10LView->currentItem()*/, 0/*ICD10LView->lastItem()*/ );
sub_item2->setText(0, list.at(i)->text);
sub_item2->setText(1, list.at(i)->code);
}
else
{
QMessageBox::critical( this, "ERROR","List = List-1 new S3");
QListViewItem *sub_item3 = new QListViewItem( ICD10LView->lastItem()/**/, ICD10LView->lastItem() );
sub_item3->setText(0, list.at(i)->text);
sub_item3->setText(1, list.at(i)->code);
}
}
}
}
}