Я работал над калькулятором Matrix в Qt и столкнулся с следующей проблемой. Я делаю это:C++ Qt - Установка значений элементов QTableWidget
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();
}
И после этого при обновленииDone(); Сигнал испускается, этот слот запускается:
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);
}
Я просто хочу установить все значения ячеек в единицы. Я не могу ничего делать с элементами, все, что я пытаюсь сделать с ними, например, установка флажков, значений и т. Д., Вызывает сбой моего приложения. если я не излучаю сигнал updatingDone()
, все работает нормально.
Все строки и столбцы добавляются правильно. Я не использую rowcount, однако matrix-> getRows() не возвращает 0 точно. Откуда мне знать? Поскольку он корректно генерирует QTableWidget со всеми столбцами и строками, но они пусты. Если я прокомментирую эту строку: ui-> tableWidget-> item (i, j) -> setText ("1"); все работает отлично, но поля пустые. – MindRoller
Так что игнорируйте updateTable выше и, пожалуйста, попробуйте мой слот – Apin
Хорошо, я попробовал ваше решение, и оно работает, однако вы можете объяснить, почему? Как я уже сказал, строки и столбцы создавались должным образом, я просто не мог устанавливать значения. Я не понимаю, почему это так не работает – MindRoller