QTabelWidget erste Zeile löschen removeRow()

Alles rund um die Programmierung mit Qt
Antworten
Maik
Beiträge: 45
Registriert: 29. Mai 2006 10:54

QTabelWidget erste Zeile löschen removeRow()

Beitrag von Maik »

hallo, wenn ich removeRow() benutze werden ja alle items der tabelle gelöscht. lauf doku: Removes the row row and all its items from the table.

wie kann ich nun mein vorhaben realisieren?

ich möchte eine tabell mit MAXZEILEN(200) erstellen d.h. wenn ich die 201. zeile einfüge mit insertRow() soll die erste zeile gelöscht werden. wenn ich nun aber die erste zeile lösche verschwinden nach und nach alle meine zeilen :-( was muss ich machen?

test() wird alle 100ms aufgerufen

void Widget_Main::test()
{ QTime Time = QTime::currentTime();
QString time = Time.toString("hh:mm:ss");

tableWidget->insertRow(row);
tableWidget->setItem(row,0,new QTableWidgetItem(time));
tableWidget->setRowHeight(row,20);
tableWidget->setShowGrid(true);
tableWidget->scrollToBottom();
row++;
if(row>200) lableWidget->removeRow(0);
}

danke
jaegermeister
Beiträge: 70
Registriert: 11. August 2004 07:44
Wohnort: Bergen auf Rügen
Kontaktdaten:

Beitrag von jaegermeister »

rowCount

Code: Alles auswählen

 	


void Widget_Main::test()
{ QTime Time = QTime::currentTime();
QString time = Time.toString("hh:mm:ss");

tableWidget->insertRow(row);
tableWidget->setItem(row,0,new QTableWidgetItem(time));
tableWidget->setRowHeight(row,20);
tableWidget->setShowGrid(true);
tableWidget->scrollToBottom();
row++;//wenn du einmal 200 erreicht hast wird jedes mal gelöscht weil du immer weiter erhöchst
if(tableWidget->rowCount()>200) tableWidget->removeRow(0);//so zählst du immer die aktuelle anzahl an zeilen
} 
ich würd das nicht mit einem timer machen sondern
nachdem du eine zeile einfügst eine prüfmethode aufrufen

mfg jaegermeister
Wie könnten ja wenn wir wollten, aber wie wollen ja nicht.
Maik
Beiträge: 45
Registriert: 29. Mai 2006 10:54

Beitrag von Maik »

so, danke erstmal.

habe es jetzt anders gelöst bzw. meinen fehler gefunden. hier der funtionierende code

version1:
int row=0;
void Widget_Main::test()
{
QTime Time = QTime::currentTime();
QString time = Time.toString("hh:mm:ss");
if(row>5)
{
tableWidget->removeRow(0);
row--;
}
tableWidget->insertRow(row);
tableWidget->setItem(row,0,new QTableWidgetItem(time));
tableWidget->setRowHeight(row,20);
tableWidget->setShowGrid(true);
tableWidget->scrollToBottom();
row++;
}

version2:
void Widget_Main::test()
{
QTime Time = QTime::currentTime();
QString time = Time.toString("hh:mm:ss");
if(tableWidget->rowCount()>200) tableWidget->removeRow(0);
int rc=tableWidget->rowCount();
tableWidget->insertRow(rc);
tableWidget->setItem(rc,0,new QTableWidgetItem(time));
tableWidget->setRowHeight(rc,20);
tableWidget->setShowGrid(true);
tableWidget->scrollToBottom();
}

danke trotzdem

mfg
maik
Antworten