我是Qt的新手,我正在尝试通过“活细胞”计数器实现康威的生活游戏-上色的细胞活着。
我想知道如何计算QTableWidget中彩色单元格的数量。
我的意思是我无法使用“if循环”来执行此操作,因为编译器无法将QTableWidgetItem::backroundColor转换为bool变量。我该怎么做?

最佳答案


首先,类没有这样的成员。
此外,您还没有显示backgroundColor的具体数据类型,因此我假设它是QColor而不是QString等。
在这种情况下,例如,这两个QColor方法将有助于您的工作:

和以下运算符:

因此,您可以编写如下内容:

const QColor redColor = QColor(Qt::red); // constant, initialized once
然后您将进行如下比较:
QBrush tableWidgetItemBrush = tableWidgetItem->background();
if (tableWidgetItemBrush.color() == redColor)
    ++livingCells;
在提供了所需代码后,我建议将来重新考虑该设计。
我将对UI使用不同的“核心”表示形式,以便将其正确解耦,甚至可以直接存储在数据库中,或在基于命令行的Mud Game等中重用。
另外,如果改天又决定不根据颜色,而是根据不同的图案而有所作为,该怎么办?

08-28 19:09