最近在制作一个表格时,要求,当Item里没内容时,item不可选中,也就是只有item里有内容时,才可以选中。
网上查了设置方法,确实查到了。在QTableWidgetItem设置为不可选中、不可编辑等状态_AlexZhaosg的博客-优快云博客_qtablewidget不可选中文章里,了解到可以通过setFocus()的办法实现。
程序逻辑是:有内容时,把item设置为可选中,无内容时把item设置为不可选中
this->item(i, j)->setFlags(this->item(i, j)->flags() & Qt::ItemIsEnabled & Qt::ItemIsSelectable);
this->item(i, j)->setFlags(this->item(i, j)->flags() & ~Qt::ItemIsEnabled & ~Qt::ItemIsSelectable);
但是结果,没到达到我的预期,这让我一度认为这个方法不靠谱,然而在偶然的测试中,发现竟然在一瞬间,软件运行在某个时期,满足我的预期。
经过测试与探究,终于发现问题所在!因为我设置item这个操作(上面的代码)是在内容添加后才调用的。而不是一开始就调用的,因为我本想,程序在初始化时,我并没有对表格里的item进行初始化,即setItem(i,j new QTableWi