Qt:委托给一位编辑

时间:2010-06-27 11:17:40

标签: java c++ qt

我想要做的是有一个表格不能直接编辑,但可以在表格外的某个小部件中编辑。也就是说,可以在这里编辑所选节点,并且所有节点都使用相同的编辑器,因为我希望它始终显示。

我尝试过的是继承QItemDelegate并返回我已经拥有的QTextEdit实例,如下所示:

class Delegate extends QItemDelegate {
    @Override
    public QWidget createEditor(QWidget parent, QStyleOptionViewItem option, QModelIndex index) {
        return qtextEdit; 
    }
}

有效,除了当你离开编辑器时它被破坏了。也许委托不应该以这种方式使用。那我该怎么做呢?

(ps。我使用jambi,但c ++代码很好)

1 个答案:

答案 0 :(得分:2)

QDataWidgetMapper类正是您想要的,可以编辑外部控件中视图外的任何记录的值。

直接从documentation开始,这是您使用它的方式:

QDataWidgetMapper *mapper = new QDataWidgetMapper;
mapper->setModel(model);
mapper->addMapping(mySpinBox, 0);
mapper->addMapping(myLineEdit, 1);
mapper->addMapping(myCountryChooser, 2);
mapper->toFirst();

并且,如果您有一个视图(QTreeView / QListView / QTableView / etc)并且您想要编辑当前选择的项目,请连接相应的信号&插槽: connect(&view, SIGNAL(activated(QModelIndex)), mapper, SLOT(setCurrentModelIndex(QModelIndex)));