Имейте в виду, что этот вопрос не является дубликатом вопроса Делаем только один столбец QTreeWidgetItem редактируемым, так как предложенное решение не работает.
Здравствуйте, так что я просто хочу сделать только один столбец моего treeWidget редактируемым.
propertyItems.push_back(new QTreeWidgetItem); //gets filled by the while-loop
propertyItems[propertyItems.size()-1]->setText(0, prop.name); //sets the text of the item
propertyItems[propertyItems.size()-1]->setText(1, prop.value);//set the text of the other item
propertyItems[propertyItems.size()-1]->setFlags(Qt::ItemIsEditable);
ui->treeWidget_3->insertTopLevelItem(ui->treeWidget_3->topLevelItemCount(), propertyItems[propertyItems.size()-1]); //appends the items
counter ++;
а также
void MainWindow::onTreeWidget3ItemDoubleClicked()
{
if (ui->treeWidget_3->currentColumn() == 2) {
ui->treeWidget_3->editItem(ui->treeWidget_3->currentItem(), ui->treeWidget_3->currentColumn());
}
}
это мой подход. ontreeWidget3ItemDoubleClicked
связано с treeWidget::doubleClicked
, treeWidget_3 не имеет edit-triggers
НО: когда я выполняю программу, QTreeView просто недоступен.
Тем не менее, я также пытался
propertyItems[propertyItems.size()-1]->setFlags(propertyItems[propertyItem.size()].flags | Qt::ItemIsEditable);
treeWidget_3
больше не отображается серым цветом, но все еще недоступно для редактирования …
Как я могу это исправить?
Кстати, я новичок в Qt, поэтому я мог забыть что-то важное. Извините в этом случае.
Как уже упоминалось в документация:
Класс QTreeWidgetItem предоставляет элемент для использования с вспомогательным классом QTreeWidget.
Это означает, что это не будет работать для всех случаев использования. Решение состоит в том, чтобы создать собственную модель и перегрузить flags(const QModelIndex& index)
метод, возвращающий соответствующие значения (в принципе Qt:: ItemIsEnabled
для столбцов только для чтения и Qt:: ItemIsEnabled | Qt::ItemIsEditable
для редактирования). Вы можете получить столбец из index.column()
,
Qt предоставляет пример начать с деревьев и моделей.
Других решений пока нет …