我应该在哪里重新实现QAbstractItemModel::supportedDragActions()

Where should I reimplement QAbstractItemModel::supportedDragActions()?

本文关键字:supportedDragActions 实现 QAbstractItemModel 在哪里 新实现 我应该      更新时间:2023-10-16

我正在将一个项目从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()函数的同一类中。只有当您需要视图的拖放功能时,才需要这样做。

相关文章:
  • 没有找到相关文章