QPtrList<QListViewItem> .... return lst;

Alles rund um die Programmierung mit Qt
Antworten
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

QPtrList<QListViewItem> .... return lst;

Beitrag von ChMaster »

hallo zusammen, kleines problemchen mit QPtrList ;)

habe das mal als bsp genommen um meine listview auszulesen bzw
welches item ich gerade anklicke.

Code: Alles auswählen

// den ausgewählten listeintrag ermitteln
QPtrList<QListViewItem> *getSelectedItems( QListView *lv ){
       if( !lv )
          return 0;
          
       // ... lege ein QList-Objekt an
       QPtrList<QListViewItem> *lst = new QPtrList<QListViewItem>;
       
       // durchlaufen aller Listeinträge
       QListViewItemIterator it( lv );
       for( ; it.current(); ++it )
          if ( it.current()->isSelected() )
             lst->append( it.current() );
       return lst;
}
und so rufe ich es auf:
bringt aber nen fehler, wie bekomme ich es hin das er das macht
was ich will :)

Code: Alles auswählen

if( getSelectedItems( lv_All )->current() == "blabla" ){
     //.....
}else if( getSelectedItems( lv_All )->current() == "blabla" ){
    //.....
}
in der Doku finde ich nix passends ausser current(), append() kann ich
nicht benutzen da er es dann anhängt, at() und find() weiss ich ich nicht
ob ich benutzen kann. erbitte um hilfe ;)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: QPtrList<QListViewItem> .... return lst;

Beitrag von Goos »

ChMaster hat geschrieben: bringt aber nen fehler, wie bekomme ich es hin das er das macht
was ich will :)
Kann ich nachvollziehen, ich versteh auch nicht was du willst :D

Goos
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

ListView: was besseres als bsp viel mir für die einträge der ListView nicht ein) :lol:

Code: Alles auswählen

BlaBla
|>Bla
|   |> blib
|   |> blob
|>Blong
|   |>bling
|   |>blung
.....
Blabbubberon
|>blibber
|   |>blubber
|   |>knuddel
|>blober
|   |>...
|   |>...

usw.
wenn ich jetzt BlaBla aufklappe und dann Bla aufklappe und auf blib
drücke soll er was ausführen, bei Blabbubberon genauso, aber wie?

(mit der oberen funktion lese ich das ausgewählte item aus, sprich
was gerade angeklickt wurde)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Ich glaub ich versteh dich noch immer nicht so richtig.
Ne QListView schickt dir doch ein clicked() Signal mitsam einem Pointer auf das entsprechende QListViewItem.
Wieso versuchst du also irgendwie über dein ListView zu iterieren? :)

Goos
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

jup das clicked() signal ist auch vorhanden:

connect( lv_All, SIGNAL( clicked(QListViewItem*) ), this, SLOT( slotListViewClicked() ) );

hab da nen screenshot erstellt

wenn ich jetzt Arawnritter aufklappe kommen 2 unter items, nun klick ich
auf Fluchlord und nun soll er mir den text vom Fluchlord anzeigen, klicke
ich auf Kampfmeister soll er mir den text vom Kampfmeister anzeigen usw.

dazu muss ich wissen ob Fluchlord angeklickt wurde ...
Dateianhänge
screenshot.PNG
screenshot.PNG (23.09 KiB) 7165 mal betrachtet
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

ChMaster hat geschrieben: connect( lv_All, SIGNAL( clicked(QListViewItem*) ), this, SLOT( slotListViewClicked() ) );
...und faellt dir was auf hier?
Wenn dir dein Signal einen QListViewItem Pointer geben moechte, wieso nimmt ihn dein Slot nicht an? ;)
Haettest du einen Slot slotListViewClicked(QListViewItem*), dann wuesstest auch was gerade geklickt wurde.

Goos
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

stimmt, daran habe ich nicht gedacht ;)
ok habe es geändert
connect( lv_All, SIGNAL( clicked(QListViewItem*) ), this, SLOT( slotListViewClicked(QListViewItem*) ) );

Code: Alles auswählen

void QDAoCGR_MasterLevel::slotListViewClicked(QListViewItem *currentItem)
{
     QString kpm = "Kampfmeister";
     QListViewItemIterator it( lv_All );
     while( it.current() ){
           /*QListViewItem **/currentItem = it.current();
           if ( currentItem->isSelected() == kpm ){                
                QMessageBox::information( this, "ToA - ML", "Kampfmeister" );           
           }else{
                 ++it;
           }
     }
}
nix passiert, vorher hat der wenigstens die MsgBox angezeigt (aber unendlich) ;)
entweder ich bin zu <zensiert></zensiert> oder ich rafs nich ...
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

ChMaster hat geschrieben:

Code: Alles auswählen

void QDAoCGR_MasterLevel::slotListViewClicked(QListViewItem *currentItem)
{
     QString kpm = "Kampfmeister";
     QListViewItemIterator it( lv_All );
     while( it.current() ){
           /*QListViewItem **/currentItem = it.current();
           if ( currentItem->isSelected() == kpm ){                
                QMessageBox::information( this, "ToA - ML", "Kampfmeister" );           
           }else{
                 ++it;
           }
     }
}
nix passiert, vorher hat der wenigstens die MsgBox angezeigt (aber unendlich) ;)
Ich glaub du raffsts nicht ;)
currentItem ist doch schon das gerade selektierte QListViewItem.
Den zugewiesenen Text kannst dann doch einfach per currentItem->text(Spalte) bekommen.
Ob der dann allerdings "Kampfmeister" ist haengt natuerlich davon ab, worauf du klickst ;)

Goos
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

es funktioniert, ich könnt dich knuddeln :P
es gibed doch noch genies 8)

Code: Alles auswählen

QString kpm = "Kampfmeister";
     QListViewItemIterator it( lv_All );
     while( it.current() ){
           if ( lv_All->currentItem()->text(0) == kpm ){
                QMessageBox::information( this, "ToA - ML", "Kampfmeister" );           
           }else{
                 ++it;
           }
     }
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

ChMaster hat geschrieben:es funktioniert, ich könnt dich knuddeln :P
Ich hoff, du bist weit weit weg :shock:

Goos
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

Goos hat geschrieben: Ich hoff, du bist weit weit weg :shock:
siehe Wohnort :lol:
aber ich dank dir drotzdem für deine hilfe.
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Antworten