Seite 1 von 1

[gelöst]TableWidget Zeile durch Auswahl löschen

Verfasst: 8. Oktober 2007 14:25
von QtNoob
Hi,
die Suchefunktion hat leider nichts zu meinen Problem gebracht.
Ich hab ein QTableWidget und möchte die Zeilen, die ich ausgewählt habe löschen.

Ein kleiner teil des Codes:

QPushButton *remove = new QPushButton(tr("Zeile entfernen"), this);;
connect(removeRow, SIGNAL(clicked()), this, SLOT(removeItem()));

void MyWidget::removeItem()
{
int row =table->rowCount();

table->removeRow(row-1);
}

so würde er nur die letzte Zeile löschen, jedoch möchte ich, das alle Zeilen die per Mausklick ausgewählt wurden gelöscht werden, bietet mir diese Möglichkeit nur QTableView?

Verfasst: 8. Oktober 2007 15:06
von macman
removeRow(int); Wie Du an die Nummer der Zeile kommst, ist eine andere Sache. Solltest Du aber in der Doku finden.

Verfasst: 8. Oktober 2007 15:17
von QtNoob
macman hat geschrieben:removeRow(int); Wie Du an die Nummer der Zeile kommst, ist eine andere Sache. Solltest Du aber in der Doku finden.
das ist es ja, hab in der doku überall gesucht, krieg schon kopfschmerzen vor lauter suche:wink: möchte die zeile, die ich per mausklick ausgewählt habe lösche(sowas wie in ms excel, zeile wählen->löschen)

if (row.isSelected)
{
table->removeRow();
}

naja sowas, ist nur ein improvisierbeispiel^^, die zeilen funktionieren natürlich ganz nicht(so ein code ist auch unmöglich :P), oder durch signale und slots, aber da bin ich grad hilflos, weil tablewidget nicht die benötigten signale bietet :roll:

Verfasst: 8. Oktober 2007 15:37
von macman
QList<QTableWidgetItem *> QTableWidget::selectedItems ()
http://doc.trolltech.com/4.3/qtablewidg ... ectedItems
int QTableWidget::row ( const QTableWidgetItem * item ) const
http://doc.trolltech.com/4.3/qtablewidget.html#row

Reicht das?

Verfasst: 8. Oktober 2007 16:27
von QtNoob
ich werd mal das ausprobieren, falls ich fortschritte gemacht habe, meld ich mich :wink:

/edit
anders gelöst, hab doch noch was im forum gefunden
void MyWidget::removeItem()
{
QModelIndexList indexList = table->selectionModel()->selectedIndexes();

QListIterator<QModelIndex> indexIt(indexList);
indexIt.toBack();

while(indexIt.hasPrevious())
{
QModelIndex index = indexIt.previous();
if(index.column() == 0) table->removeRow(index.row());
}
}