2

我有一个由 QTableWidget 创建的矩阵,我有多个线程可以更改单元格的颜色,我想在设置颜色后立即看到颜色变化。我现在所拥有的是,只有在完成所有单元格着色后,我才能看到整个单元格的颜色都改变了一次。我在着色之间有一个很好的延迟,所以并不是线程填充单元格的速度如此之快。

每个线程调用函数 fillInCell(x,y,val,myThreadIdx);

void ResultMatrix::fillInCell(int i, int j, int val, int color )
{

    QTableWidgetItem* item = new QTableWidgetItem();
    item->setText(QString::number(val));
    colorCell(color,item);
    ui->matrixResult->setItem(i,j,item);
}

colorCell 是为单元格着色的函数

void ResultMatrix::colorCell(int threadNum, QTableWidgetItem* item)
{

    switch (threadNum)
    {
    case 0:{
            QColor cellColor(255, 0, 0 );
            item->setBackgroundColor(cellColor);
            return;}
    case 1:{
.....
4

1 回答 1

0

该方法对我有用:

QAbstractItemView::reset();

QTableWidget继承于QAbstractItemView

于 2018-03-21T13:51:13.923 回答