现有一个TableWidget,可以直接编辑item的值,编辑后判断是否跟其他item的值重复,如果重复将背景设为红色。将红色的item更改后,若不重复就改为原始颜色。
我尝试用itemChanged信号来操作,但是发现在关联itemChanged的槽函数内更改了item背景颜色后又会触发一遍itemChanged信号。
求问此问题如何解!
感激不尽!
itemchanged信号触发条件很多,比如颜色改变、字体改变、内容改变等等,都会触发,处理方法是:
先需要判断数据是否发生变化,如果是是数据内容发生变化,再去处理,如果是其它变化触发的,则忽略。
参考:
QTableWidget信号itemChanged_小夜志的博客-CSDN博客 使用过itemchanged信号的肯定知道,即使没有对表格中的内容进行修改也会发送itemChanged信号,如果在循环判断语句中出现,那可能会造成死循环。对此只有使用间接的方法:首先创建一个标志flag为false。然后在ItemDoubleClicked信号槽中将此置为true,这样就说明已经对表格进行修改了,接着在itemChanged信号槽中对flag进行判断,false则返回,true则继续执行。当然这也是借鉴了别人的想法。... https://blog.csdn.net/qq_36284984/article/details/106057537