QTableWidgetItem设置为不可选中、不可编辑等状态

    在使用QTableWidget显示图片、文字等信息的时候,有时会遇到这样一种情况:图片或者文字没有填满一整行或一整列。余下的几项是空白的单元格,白占着位置,最关键的是这些Item还可以被选中,在选中项被设成高亮显示的时候就十分的难看,显得很不和谐。如何设置这些空白的单元格,使其看起来就像背景的白板一样呢?

    下面提供解决办法:

1、首先空白的单元格要填入一个QTableWidgetItem,这是必要的,因为我们要针对某一个Item操作,而不是QTableWidget。

2、通过设置flag,设置Item的属性:使其不可用或者不可选中、不可编辑。

Qt提供了一个函数(setFlags(Qt::ItemFlags))和一些枚举值来设置这些属性。

使用方法如下:

QTableWidgetItem *item = new QTableWidgetItem();
tabWidget->setItem(2,0,item);
item->setFlags(item->flags() & ~Qt::ItemIsEnabled & ~Qt::ItemIsSelectable);

上面用到的两个枚举中:~Qt::ItemIsEnabled可以保证单击该Item时不会被选中,但是在启用Ctrl + A时,全选操作会导致Item被选中。~Qt::ItemIsSelectable的使用可以保证全选状态下也不会被选中,但是在单独使用时出现了虚线框,没有真正实现“不存在”的效果。所以必须两个同用。

你可能感兴趣的:(QTableWidgetItem设置为不可选中、不可编辑等状态)