我正在尝试对 QtableWidget 中的行进行求和,但这样做时出现分段错误,不确定是什么原因造成的,但我认为这与我将单元格小部件项目设置为旋转框而我没有这样做有关正确访问它们。
当我在 cellChanged 事件中设置它时,当旋转框发生更改时,我也无法触发 TotalRow 函数。
TotalRow 函数(当单元格更改时应该对行进行总计)
int MainWindow::totalRow(int srow)
{
int sum = 0;
int num_col = ui->tblScores->columnCount();
int num_row = ui->tblScores->rowCount();
for (int j = 0; j < num_col - 1 ; ++j) {
QTableWidgetItem *tableItem = ui->tblScores->item(srow,j);
sum += tableItem->text().toInt();
cout << sum << endl;
}
QTableWidgetItem *tableItem = new QTableWidgetItem;
tableItem->setText(QString::number(sum));
ui->tblScores->setItem(srow,num_col - 1,tableItem);
return sum;
}
setupTable 函数(这就是将表项设置为旋转框的函数)
void MainWindow::setupTable()
{
int num_col = ui->tblScores->columnCount();
int num_row = ui->tblScores->rowCount();
for (int i = 0; i < num_row; ++i) {
for (int j = 0; j < num_col - 1 ; ++j) {
ui->tblScores->setCellWidget(i,j,new QSpinBox(ui->tblScores));
}
ui->tblScores->setCellWidget(i,num_col - 1,new QLabel(ui->tblScores));
}
}
单元格更改事件
void MainWindow::on_tblScores_cellChanged(int row, int column)
{
totalRow(row);
}