现有一个TableWidget,可以直接编辑item的值,编辑后判断是否跟其他item的值重复,如果重复将背景设为红色。将红色的item更改后,若不重复就改为原始颜色。
我尝试用itemChanged信号来操作,但是发现在关联itemChanged的槽函数内更改了item背景颜色后又会触发一遍itemChanged信号。
求问此问题如何解!
感激不尽!

QT C++ QTableWidgetItem重复判断
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- qfl_sdu 2021-09-02 13:16关注
itemchanged信号触发条件很多,比如颜色改变、字体改变、内容改变等等,都会触发,处理方法是:
先需要判断数据是否发生变化,如果是是数据内容发生变化,再去处理,如果是其它变化触发的,则忽略。
参考:
QTableWidget信号itemChanged_小夜志的博客-CSDN博客 使用过itemchanged信号的肯定知道,即使没有对表格中的内容进行修改也会发送itemChanged信号,如果在循环判断语句中出现,那可能会造成死循环。对此只有使用间接的方法:首先创建一个标志flag为false。然后在ItemDoubleClicked信号槽中将此置为true,这样就说明已经对表格进行修改了,接着在itemChanged信号槽中对flag进行判断,false则返回,true则继续执行。当然这也是借鉴了别人的想法。...https://blog.csdn.net/qq_36284984/article/details/106057537
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用