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

Alles rund um die Programmierung mit Qt
Antworten
QtNoob
Beiträge: 10
Registriert: 8. Oktober 2007 14:06

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

Beitrag 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?
Zuletzt geändert von QtNoob am 9. Oktober 2007 11:34, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

removeRow(int); Wie Du an die Nummer der Zeile kommst, ist eine andere Sache. Solltest Du aber in der Doku finden.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
QtNoob
Beiträge: 10
Registriert: 8. Oktober 2007 14:06

Beitrag 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:
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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?
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
QtNoob
Beiträge: 10
Registriert: 8. Oktober 2007 14:06

Beitrag 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());
}
}
Antworten