我应该在哪里重新实现QAbstractItemModel::supportedDragActions()
Where should I reimplement QAbstractItemModel::supportedDragActions()?
我正在将一个项目从Qt4.x迁移到5,下一个功能已经过时:
model->setSupportedDragActions(Qt::MoveAction);
我已经研究过了,显然我必须重新实现这个函数/覆盖一个名为supportedDragActions()的虚拟函数。这个家伙对这个函数也有同样的问题,并解决了它。我的新手问题是,我应该在哪里重新实现这样的功能?在qabstractitemmodel.h/cpp中?或者在另一个班的某个地方?
原谅我的无知。
谢谢。
编辑:我在我的cpp中实现了这个函数,就在调用setSupportedDragActions()的函数上方,如下所示:
mapmodulelist.cpp:
void QAbstractItemModel::setSupportedDragActions(Qt::DropActions actions){
Q_D(QAbstractItemModel);
d->supportedDragActions = actions;
}
void MapModuleList::setupModel() {
if (mapLayersModel == NULL) {
mapLayersModel = new QStandardItemModel(0);
mapLayersModel ->setSupportedDragActions(Qt::MoveAction);
}
}
mapLayersModel是这个类的成员,这是它的声明:
static QStandardItemModel* mapLayersModel;
我还必须在qabstractitemmodel中添加一个标题。h:
void setSupportedDragActions(Qt::DropActions actions);
我得到下一个错误:
invalid use of incomplete type 'class QAbstractItemModelPrivate'
d->supportedDragActions = actions;
^
和
forward declaration of 'class QAbstractItemModelPrivate'
class QAbstractItemModelPrivate;
^
我一定做错了什么。
您需要在您的模型子类中实现(而不是覆盖)此虚拟函数,即在实现过时setSupportedDragActions()
函数的同一类中。只有当您需要视图的拖放功能时,才需要这样做。
相关文章:
- 没有找到相关文章