禁用(灰色)QTreeView 中的某些行
Disable (grey-out) some rows in a QTreeView
我有一个(非常简单的)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" 以便它仍然可见但不能再被选中并且以某种方式变灰以便用户可以看到该条目未激活。
可能这是某种初学者问题,但如何才能做到?
谢谢!
您可能想要使用 QItemDelegate
class,它允许您禁用您想要禁用的行等。 Whosebug 上有一个很好的问题,展示了如何做一个非常基本的例子:How to set a delegate for a single cell in Qt item view?
我会尝试通过以下方式做到这一点:
// Get item that corresponds to the first row
QStandardItem *item = m_cameraModel->item(0, 0);
// Disable the item.
item->setFlags(Qt::NoItemFlags);
我有一个(非常简单的)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" 以便它仍然可见但不能再被选中并且以某种方式变灰以便用户可以看到该条目未激活。
可能这是某种初学者问题,但如何才能做到?
谢谢!
您可能想要使用 QItemDelegate
class,它允许您禁用您想要禁用的行等。 Whosebug 上有一个很好的问题,展示了如何做一个非常基本的例子:How to set a delegate for a single cell in Qt item view?
我会尝试通过以下方式做到这一点:
// Get item that corresponds to the first row
QStandardItem *item = m_cameraModel->item(0, 0);
// Disable the item.
item->setFlags(Qt::NoItemFlags);