在我的应用程序中,我有一个QTableView和一个QTreeView。我需要从表视图中拖放到树视图中。我有这个工作,但我重新工作的应用程序,以便图形用户界面元素是在C++中创建的,这已停止工作。
我可以从表中拿起一项,并将其放到树上-一切看起来都很好。但是,由于没有调用表模型的mimeData()方法,因此删除的数据是不完整的。
如何让拖放操作调用mimeData()方法?
表的模型是基于QStandardItemModel的。
发布于 2016-01-16 09:59:18
我的代码也有类似的问题。确保正确覆盖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;如果你重写了一个正确的函数,你的代码将不会被编译,因为返回类型冲突(不允许你只重写返回类型)。如果您的代码编译得很好,那么您并没有覆盖任何东西,而是声明了一个新函数。检查函数签名。
https://stackoverflow.com/questions/29543203
复制相似问题