2014-02-19 4 views
0

Я хочу, чтобы элементы QTableWidget редактировались для пользователя. Следующий код работает прекрасно, когда он собран в отдельном проекте:Невозможно отредактировать QTableWidgetItems

QTableWidget *tablewidget = new QTableWidget; 

// Add data 
tablewidget->insertRow(0); 
tablewidget->insertColumn(0); 
tablewidget->insertColumn(1); 

QTableWidgetItem *item; 
item = new QTableWidgetItem("editable"); 
tablewidget->setItem(0,0,item); 

я могу дважды щелкнуть на ячейке, и он становится готов к приему ключей.

Но когда я делаю этот код частью моего существующего проекта (именно этот код, никакой разницы и никаких подключений к существующему коду), двойной щелчок по ячейке ничего не вызывает - ячейка не редактируется!

Этот проект действительно большой, и полный обзор кода займет огромное количество времени.

Мое первое предположение - возможно, Qt позволяет глобально установить неизменяемое состояние для всех экземпляров QTableWidget/QTableWidgetItem? Или зарегистрировать делегатов по всему миру?

Как вы считаете, первопричина?

ответ

0

QTableWidget по умолчанию редактируется и содержит DoubleClick в качестве триггера редактирования.

Но ваш уже существующий проект, возможно, изменил эти свойства. Вы можете изменить их по умолчанию. Сначала попробуйте установить триггер редактирования для всей таблицы:

tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked); 

Если это не решит вашу проблему, то попробуйте изменить редактируемые свойства каждого элемента:

item->setFlags(item.Flags() | Qt::ItemIsEditable); 
Смежные вопросы