| Код | #include <QtGui/QApplication> #include <QtGui/QTreeWidget> #include <QtGui/QTreeWidgetItem> #include <QtGui/QStyledItemDelegate> #include <QtGui/QComboBox>
class MyDelegate : public QStyledItemDelegate { public: explicit MyDelegate(QObject* parent = NULL) : QStyledItemDelegate (parent) {} virtual ~MyDelegate() {} virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const { QComboBox* editor = new QComboBox(parent); editor->addItems(tr("item1,item2,item3,item4,item5").split(',')); editor->setEditable(true); return editor; } virtual void setEditorData(QWidget *editor, const QModelIndex &index) const { QComboBox* cb = (QComboBox*)editor; cb->setEditText(index.model()->data(index, Qt::EditRole).toString()); } virtual void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { QComboBox* cb = (QComboBox*)editor; QString value = cb->currentText(); model->setData(index, value); } virtual void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const { editor->setGeometry(option.rect); } };
int main(int argc, char** argv) { QApplication app(argc, argv); QTreeWidget tree; QTreeWidgetItem* item1 = new QTreeWidgetItem(&tree, QStringList("item1") ); item1->setFlags(item1->flags() | Qt::ItemIsEditable); QTreeWidgetItem* item2 = new QTreeWidgetItem(item1, QStringList("item2") ) ; item2->setFlags(item2->flags() | Qt::ItemIsEditable); QTreeWidgetItem* item3 = new QTreeWidgetItem(item2, QStringList("item3") ); item3->setFlags(item3->flags() | Qt::ItemIsEditable); QTreeWidgetItem* item4 = new QTreeWidgetItem(&tree, QStringList("item4") ); item4->setFlags(item4->flags() | Qt::ItemIsEditable); QTreeWidgetItem* item5 = new QTreeWidgetItem(item4, QStringList("item5") ); item5->setFlags(item5->flags() | Qt::ItemIsEditable); tree.setItemDelegate(new MyDelegate(&tree)); tree.setEditTriggers(QTreeWidget::AllEditTriggers); tree.show(); app.exec(); }
|
Все вероятно из-за отсутствия этого:
| Код | item1->setFlags(item1->flags() | Qt::ItemIsEditable);
|
|