调用QStandardItem mimeData()方法

时间:2015-04-09 15:49:16

标签: qt

在我的应用程序中,我有一个QTableView和一个QTreeView。我需要从表视图中拖动并放入树视图中。我有这个工作,但我重新设计了应用程序,以便gui元素是用C ++创建的,这已经停止了工作。

我可以从桌子上拿起一件物品放在树上 - 一切看起来都很好。但是,不调用表模型的mimeData()方法,因此删除的数据不完整。

如何调用拖放操作来调用mimeData()方法?

表格' model基于QStandardItemModel。

1 个答案:

答案 0 :(得分:0)

我的代码遇到了类似的问题。确保正确覆盖mimeData。例如,一些示例将原型显示为:

QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const;

正确的原型是:

QMimeData * mimeData(const QList<QTreeWidgetItem *> items) const;

(注意项目前面缺少的参考)。如果你不正确地实现它,你不是重写mimeData()而是实现另一个mimeData()函数。

确保正确执行操作的简单方法是声明要覆盖的函数,但将其返回类型从QMimeData *更改为bool,例如:

bool mimeData(const QList<QTreeWidgetItem *> items) const;

如果要覆盖正确的函数,则由于返回类型冲突,您的代码将无法编译(您不允许仅覆盖返回类型)。如果您的代码编译得很好,那么您不会覆盖任何内容,而是声明一个新函数。检查功能签名。