我有一个信号从QTableWidget传到插槽recalculate(int, int)
那里。根据用户输入,该函数进行一些计算并更改单元格背景颜色。
connect(ui->tableWidget_input, SIGNAL(cellChanged(int, int)), this, SLOT(recalculate(int, int)));
问题是当背景颜色更改时cellChanged会发出信号,当文本更改时我只需要发出信号。
颜色变化会导致无限循环,如下所示:
Recalculate
():通过条件时,将更改背景。 Recalculate
():通过条件时,将更改背景。 拜托,您是否知道如何通过文本仅更改-不更改背景颜色来发出信号?
最佳答案
一个简单的解决方案是使用blockSignals()阻止QTableWidget信号的发出:
void Foo::recalculate(int row, int column){
ui->tableWidget_input->blockSignals(true);
// update here
ui->tableWidget_input->blockSignals(false);
}
关于c++ - QTableWidget信号(cellChanged)上的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688038/