У меня есть столбец с флажком в QTableView
. Флажок порождена:Редактируемый флажок только в столбце QTableView
- возвращающегося
Qt::ItemIsUserCheckable
в перегруженной функцииflags
член - в перегруженной
data()
функции я возвращаюQt::CheckState
дляrole == Qt::CheckStateRole
по данным
Works, см скриншот.
Но рядом с флажком у меня есть редактируемое текстовое поле в столбце. Как я могу избавиться от этого текстового поля (где я поступила "dsdsdsds" для демонстрации? Разъяснения, флажка должен быть редактируемым, но ничего больше.
As запрошено, я могу показать только упрощенную версию
Qt::ItemFlags MyClass::flags(const QModelIndex &index) const {
Qt::ItemFlags f = QAbstractListModel::flags(index);
... return f if index is not target column ....
// for target column with checkbox
return (f | Qt::ItemIsEditable | Qt::ItemIsUserCheckable;)
}
QVariant MyClass::data(const QModelIndex &index, int role) const {
.. do something for other columns
.. for checkbox column
if (role != Qt::CheckStateRole) { return QVariant(); }
bool b = ... get value for checkbox column
Qt::CheckState cs = b ? Qt::Checked : Qt::Unchecked;
return QVariant(static_cast<int>(cs));
}
Если я удалю Qt::ItemIsEditable
, тогда этот флажок также доступен только для чтения. Позже я нашел SO answer с аналогичным подходом.
Примечание: Нет дубликатом A checkbox only column in QTableView
Вы можете показать нам свой текущий код? или дать нам минимально полный пример? – randomusername
добавлен код выше –
@HorstWalter, как насчет удаления флага 'Qt :: ItemIsEditable'? –