Ich habe an einem Matrix-Rechner in Qt gearbeitet und folgendes Problem festgestellt. Ich mache das:C++ Qt - Einstellen der QTableWidget Elemente Werte
void ShowMatrix::updateTable()
{
int w = 323 - 305;
int h = 300 - 227 + 15;
for(int i = 0; i < matrix->getRows(); i++)
{
ui->tableWidget->insertRow(i);
h += 35;
}
for(int j = 0; j < matrix->getColumns(); j++)
{
ui->tableWidget->insertColumn(j);
w += 50;
}
this->resize(w, h);
this->setMinimumSize(w, h);
ui->retranslateUi(this);
this->setWindowTitle(matrix->getName());
emit updatingDone();
}
Und danach, wenn updateDone(); Signal wird emittiert, dieser Steckplatz wird gestartet:
void ShowMatrix::setValues()
{
QString str;
for(int i = 0; i < matrix->getRows(); i++)
for(int j = 0; j < matrix->getColumns(); j++)
{
ui->tableWidget->item(i, j)->setText("1");
}
ui->retranslateUi(this);
}
Ich möchte nur alle Zellenwerte zu Einsen setzen. Ich kann nichts mit Gegenständen machen, alles, was ich mit ihnen machen will, wie das Setzen von Flaggen, Werten usw. stürzt meine Anwendung ab. Wenn ich kein updatingDone()
Signal aussende, funktioniert alles gut.
Alle Zeilen und Spalten werden korrekt hinzugefügt. Ich benutze rowcount nicht, aber matrix-> getRows() gibt 0 nicht sicher zurück. Wie soll ich wissen? Weil es das QTableWidget mit allen Spalten und Zeilen korrekt generiert, aber sie sind leer. Wenn ich diese Zeile kommentiere: ui-> tableWidget-> item (i, j) -> setText ("1"); alles funktioniert gut, aber Felder sind leer. – MindRoller
Also ignorieren Sie die updateTable oben und bitte versuchen Sie meinen Slot – Apin
Ok ich habe Ihre Lösung versucht und es funktioniert, aber können Sie erklären, warum? Wie gesagt, Zeilen und Spalten wurden korrekt erstellt, ich konnte keine Werte festlegen. Ich verstehe nicht, warum es so nicht funktioniert – MindRoller