Anzeige:
Ergebnis 1 bis 9 von 9

Thema: QT ListView

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15

    QT ListView

    Hallo Leute,

    ich schlage mich schon geraume zeit mit der QListView und dessen Items rum.
    auch wenn ich mit qt recht gut klar komme, hab ich da so meine verständnis probleme.
    ich habe mir ein QListView erstellt.
    habe ca. 195 parent QListViewItems und die haben jeweils 7 Kinder.
    nun möchte ich selectionsänderung wissen, wo ich mich in der liste befinde und welchen wert mein item hat. (bzw. die werte der ersten 4 kinder des parents abfragen)
    mit dem signal selectionChanged() bin ich schon mal so weit, das ich listevent abfangen kann.
    mit QListViewItem* i = QListView::selectedItem() dachte ich nun, das ich das aktuelle item abfragen kann.
    aber was und wie frage ich ab. ich hab kein plan mehr.

    danke im vorraus

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Ich mach immer eine Subclass von QListViewItem mit einem Datenfeld, das ich dann auslesen kann.

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    äh, und wie bekommt du den wert des item in dein datenfeld?
    (warscheinlich blöde frage, aber ich habe heute soviel gegrübelt, das mir jetzt die einfachsten dingen unklar sind)

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Verstehe ich dich richtig: Du hast ein Listview mit einer Anzahl Items, zu jedem Item gehören ein paar Daten. Wenn jetzt ein Item ausgewählt wird, sollen die entsprechenden Daten in anderen Widgets angezeigt werden?

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    jap

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    Bitteschön:

    Code:
    #include <qlistview.h>
    #include <qapplication.h>
    #include <qvbox.h>
    #include <qlineedit.h>
    
    class MyListViewItem : public QListViewItem
    {
     public:
      MyListViewItem(const QString & display, const QString & data, QListView* parent);
      const QString & data() const { return _data; }
     private:
      QString _data;
    };
    
    MyListViewItem::MyListViewItem(const QString & display, const QString & data, QListView* parent) : QListViewItem(parent, display), _data(data)
    {
    
    }
    
    class MainWindow : public QVBox
    {
     Q_OBJECT
     public:
      MainWindow(QWidget* parent = 0);
     private slots:
      void itemSelected(QListViewItem* );
     private:
      QListView* listview;
      QLineEdit* datadisplay;
    };
    
    MainWindow::MainWindow(QWidget* parent) : QVBox(parent)
    {
     listview = new QListView(this);
     datadisplay = new QLineEdit(this);
     listview->addColumn("Entry");
    
     new MyListViewItem("Axel", "Axel Jäger", listview);
     new MyListViewItem("Klaus", "Klaus Meyer", listview);
    
     connect(listview, SIGNAL(selectionChanged(QListViewItem*)), this, SLOT(itemSelected(QListViewItem*)));
    }
    
    void MainWindow::itemSelected(QListViewItem* itm)
    {
     MyListViewItem* mitm = (MyListViewItem*)itm;
     datadisplay->setText(mitm->data());
    }
    
    #include "qlistview.moc.cpp"
    
    int main(int argc, char ** argv)
    {
     QApplication app(argc, argv);
     MainWindow mw;
     app.setMainWidget(&mw);
     mw.show();
     return app.exec();
    }
    Du musst dir halt noch den Moc-Code erzeugen lassen.

  7. #7
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    genau dieses: "datadisplay->setText(mitm->data());" hab ich gesucht.
    ich habs geschnackellt.

    Danke Dir

  8. #8
    Registrierter Benutzer
    Registriert seit
    15.10.2003
    Beiträge
    15
    hab jetzt ein problem mit dem konstruktor der MyListViewItem Klasse.
    So wie du es gelistet hast, erstellt du 2 Items. Ich habe aber 1 Item und das ist "parent" für 7 weitere Items. Die sieben haben also nicht die Liste als parent, sonder der 1 Item.
    Dafür brauch ich doch zwei Konstruktoren, oder ?

    __________________________EDIT:___________________ __________


    Ich habs selber gefunden

    Code:
    MyListViewItem::MyListViewItem(const QString & display, 
    const QString & data, QListView* parent) : QListViewItem(parent, display), _data(data)
    {
    }
    
    MyListViewItem::MyListViewItem(const QString & display, 
    const QString & data, QListViewItem* after) : QListViewItem(after, display), _data(data)
    {
    }
    Geändert von kext (16-10-2003 um 09:50 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    08.07.2002
    Beiträge
    719
    ja, so kann man's machen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •