Сделать редактируемым только один столбец QTreeWidget // Устранение неполадок

Имейте в виду, что этот вопрос не является дубликатом вопроса Делаем только один столбец 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, поэтому я мог забыть что-то важное. Извините в этом случае.

1

Решение

Как уже упоминалось в документация:

Класс QTreeWidgetItem предоставляет элемент для использования с вспомогательным классом QTreeWidget.

Это означает, что это не будет работать для всех случаев использования. Решение состоит в том, чтобы создать собственную модель и перегрузить flags(const QModelIndex& index) метод, возвращающий соответствующие значения (в принципе Qt:: ItemIsEnabled для столбцов только для чтения и Qt:: ItemIsEnabled | Qt::ItemIsEditable для редактирования). Вы можете получить столбец из index.column(),

Qt предоставляет пример начать с деревьев и моделей.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]