gpt4 book ai didi

java - Qt:委托(delegate)给单个编辑器

转载 作者:行者123 更新时间:2023-11-30 04:38:29 26 4
gpt4 key购买 nike

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

我尝试的是子类化 QItemDelegate 并只返回我已经拥有的 QTextEdit 实例,如下所示:

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

这有效,只是当您离开编辑器时它会被销毁。也许委托(delegate)不应该以这种方式使用。那么我该如何实现呢?

(ps.我使用 jambi 但 C++ 代码没问题)

最佳答案

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

直接取自 documentation ,这就是您使用它的方式:

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

并且,如果您有一个 View (QTreeView/QListView/QTableView 等)并且您想要编辑当前选定的项目,请连接适当的信号和插槽:connect(&view, SIGNAL(activated(QModelIndex)), mapper, SLOT(setCurrentModelIndex(QModelIndex)));

关于java - Qt:委托(delegate)给单个编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com