QListWidget - Übergabe der items
-
Hallo,
ich habe mir ein fenster bestehend aus einem einen QListWidget und einem QButton gemacht.Wenn der Button gedrückt wird, sollen die markierten items ausgelesen werden um damit was zu machen.
der code, den ich habe sieht so aus:
// die klasse class dirlister : public QWidget { Q_OBJECT public: dirlister(QWidget *parent = 0); QListWidget *director; private slots: void emitter(); signals: void dirsignal(QStringList d); private: }; // .cpp dirlister::dirlister(QWidget *parent) : QWidget(parent) { QString directory = QFileDialog::getExistingDirectory (this, "Bitte Arbeitsverzeichnis wählen", "C:\\",QFileDialog::ShowDirsOnly); QDir *dirs = new QDir(directory); dirs->setFilter(QDir::Dirs | QDir::NoSymLinks); QListWidget *director = new QListWidget(); director->setSelectionMode(QAbstractItemView::ExtendedSelection ); director->insertItems(2,dirs->entryList() ); QVBoxLayout *mydir = new QVBoxLayout(); QPushButton *OKButton = new QPushButton(tr("OK")); connect(OKButton, SIGNAL(clicked() ), this, SLOT( emitter() ) ); mydir->addWidget(director); mydir->addWidget(OKButton); setLayout(mydir); } void dirlister::emitter() { QList<QListWidgetItem *> selected = director->selectedItems(); // und dann selected auslesen und als QStringList weitergeben // emit dirsignal(...) }
wenn ich mein QListWidget im header deklariere, damit die voidfunktion weiß, das es das ding(director) gibt, stürzt das Programm ab. compilieren geht.
wie geht so was ?
DankeHeiko
//Edit(evilissimo) Codetags hinzugefügt
-
Was für eine QT Version nutzt du denn?
Nen Qlistwidget ist mir nicht bekannt.
Versuchs doch mal mit nen Qlistview.Und dann sowas wie:
QStringList YourClass:getItems() { QStringList items; QListViewItemIterator it( myQListView ); while ( it.current() ) { QListViewItem *i = it.current(); if ( i->isSelected() ) { items.append(i->text(0)); cout << i->text(0) << endl; } ++it; } return (hosts); }
habe das nur copy+paste und kurz umgeschrieben.
kann sein, das du noch was ändern muss.
Aber generell funkt das.Sinnvoll ist es vielleicht auch das Ganzen als getItems(bool selected)
zu schreiben (plus kleiner Schleife). Dann kannst du auswählen, ob du alle ausgewählten oder alle "nicht ausgewählten" Objekte haben willst.Gruss,
Buggykite