禁用(灰显)QTreeView中的某些行

时间:2016-02-02 09:21:07

标签: qt qt5 qt5.5

我有一个(非常简单的)QTreeView显示了一些行:

m_cameraModel = new QStandardItemModel(this);
QSortFilterProxyModel* cameraProxyModel = new QSortFilterProxyModel(this);
cameraProxyModel->setSourceModel(m_cameraModel);
ui.CameraTreeView->setModel(cameraProxyModel);

m_cameraModel->appendRow(new QStandardItem("Panavision"));
m_cameraModel->appendRow(new QStandardItem("Panaflex"));

这里我要禁用第一行" Panavision"这样它仍然可见,但不能再被选中,并且以某种方式显示为灰色,以便用户可以看到此条目未激活。

可能这是某种初学者问题,但如何做呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

我会尝试以下列方式执行此操作:

// Get item that corresponds to the first row
QStandardItem *item = m_cameraModel->item(0, 0);
// Disable the item.
item->setFlags(Qt::NoItemFlags);

答案 1 :(得分:0)

您希望使用QItemDelegate类,它允许您禁用您想要的行等。 StackOverflow上有一个很好的问题,它展示了如何做一个非常基本的例子:How to set a delegate for a single cell in Qt item view?