我陷入尝试在Qt tableWidget中设置背景色的问题。我非常希望您的帮助。
这是我的代码。

QColor colorLive( Qt::red );
ui->tableWidget->setRowCount(14);
ui->tableWidget->setColumnCount(14);
for (int g = 0; g < 15; ++g)
{
    for (int i = 0; i < 15; ++i)
    {
        ui->tableWidget->setItem( g, i, new QTableWidgetItem );
        ui->tableWidget->item( g, i )->setBackgroundColor( colorLive );
        // error here
    }
}


应用程序输出如下所示:The program has unexpectedly finished.
但是如果我通过更改错误代码行
ui->tableWidget->item( 0, 0 )->setBackgroundColor( colorLive );
,那么它适用于一个单元。但是,实际上,我需要设置所有或部分单元格。如果您能帮助我,我将不胜感激!

最佳答案

您已经超出了列数和行数。您将columnCountrowCount设置为14。这意味着有效范围是0-13。但是在for循环中,您要遍历0-14行和0-14列。第14行和第14列无效。

这应该解决它:

int rows = 14;
int columns = 14;
QColor colorLive(Qt::red);
ui->tableWidget->setRowCount(rows);
ui->tableWidget->setColumnCount(columns);
for (int g = 0; g < rows; ++g)
{
    for (int i = 0; i < columns; ++i)
    {
        ui->tableWidget->setItem(g, i, new QTableWidgetItem);
        ui->tableWidget->item(g, i)->setBackgroundColor(colorLive);
    }
}

关于c++ - Qt QTableWidget细胞颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19761151/

10-15 16:48