Где я должен переопределить QAbstractItemModel :: supportDragActions ()?

Я мигрирую проект из Qt 4.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;
^

Я должен делать что-то не так.

2

Решение

Вы должны реализовать (а не переопределить) эту виртуальную функцию в твоя модель подкласс, то есть в том же классе, где вы реализовали устаревшие setSupportedDragActions() функция. Это необходимо, только если вам нужна функциональность перетаскивания для ваших представлений.

1

Другие решения


По вопросам рекламы [email protected]