我正在寻找的是“灰色”"在表格中的一行,我使用QTableView
并设置了以下标志:
this->setSelectionMode(QAbstractItemView::ExtendedSelection);
this->setSelectionBehavior(QAbstractItemView::SelectRows);
QTableView
是不可编辑的,但基本上按照预期,当点击一行时,它会突出显示为蓝色。我想添加一个上下文菜单选项来灰显一行而不是隐藏它。基本上使用其他小部件,您可以调用setEnabled(bool)
,它只是使它可以看到小部件,但不是点击它或更改值等。我想知道是否有一个等效的单行QTableView
或者我将不得不在样式表等方面做一些尴尬的讨厌?
答案 0 :(得分:1)
我假设你正在使用QAbstractTableModel
。
def data(self, index, role=Qt.DisplayRole):
if role == Qt.BackgroundRole:
# myItems is your data list for QAbstractTableModel
# myObject.isDisabled is your decision flag
if self.myItems[index.row()].isDisabled is True:
return QVariant(Qt.gray)
# other roles if needed (Display, align, foreground, etc.)
阅读完整文档 - > QtDoc.QAbstractTableModel
答案 1 :(得分:1)
是否启用了单元格由Qt::ItemIsEnabled
flags
方法返回的QAbstractItemModel
标志控制。
默认情况下,返回Qt::ItemIsEnabled | Qt::ItemIsSelectable
。只需在模型中重新实现flags()
,然后省略Qt::ItemIsEnabled
:
Qt::ItemFlags YourModel::flags(const QModelIndex& index) const
{
Qt::ItemFlags f = Qt::ItemIsSelectable;
if (rowIsEnabled(index.row())
f |= Qt::ItemIsEnabled;
return f;
}
请参阅文档:http://qt-project.org/doc/qt-5/qabstractitemmodel.html#flags