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

标签 java c++ qt

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

我尝试的是子类化 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/

相关文章:

c++ - Canny 边缘检测器未处理的异常

qt - 如何使 QML ListView 不可滑动?

java - Selenium Web 驱动程序无法单击包含本地化文本的链接

java - 如何在 Java 中计算卢卡斯数

java - 如何确保 android 中的互联网是否正常工作

c++ - 从 std::string vector 返回 char

java - ConnectyCube 检索对话框列表返回空列表

c++ - 为另一个线程设置线程执行状态

c++ - 如何检查 QT_VERSION 以包含不同的标题?

c++ - 使用 QNetworkManager 在 QT 中设计多个嵌套 GET/POST 的最佳方法