Я мигрирую проект из 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;
^
Я должен делать что-то не так.
Вы должны реализовать (а не переопределить) эту виртуальную функцию в твоя модель подкласс, то есть в том же классе, где вы реализовали устаревшие setSupportedDragActions()
функция. Это необходимо, только если вам нужна функциональность перетаскивания для ваших представлений.