Seite 1 von 1

QTabelWidget erste Zeile löschen removeRow()

Verfasst: 13. Juli 2006 12:18
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

Verfasst: 13. Juli 2006 12:55
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

Verfasst: 13. Juli 2006 13:41
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