由于项目对功能的改变,需要对列表的某些项进行灰化,即不可接收点击事件。
因为列表中设计到了自定义的样式,所以我采用了QListWidget,查找文档之后发现了这个办法:
ui->listWidget->item(row)->setFlags((Qt::ItemFlag)0); //row是我们要灰化的item行
上面这个方法只能针对QListWidget直接加数据或者添加QListWidgetItem,当里面是自定义的widget时候,发现这个方法只能产生不能点击事件
可是并没有灰化,通过尝试发现可以获取item里面包含的widget,设置他的Enabled属性,两者结合使用即可:
ui->listWidget->itemWidget(ui->listWidget->item(row))->setEnabled(false);
ui->listWidget->item(row)->setFlags((Qt::ItemFlag)0);