I am trying to keep a drag and drop from being able to place some objects in the tree under other objects. To do this I want to change how ONE function works. So I tried to use QTreeView as a base class to a new class.
QT_Creator however throws an error: undefined reference to `vtable for RoomTree'
In an attempt to get rid of the error I have added every virtual function in the QTreeView I could find but it still will not work.
So two questions 1: What do i need to add to get this to work. 2: And Is this really the only way to create a derived class from the QTreeView or is there a way to tell C++ That if the function is not in the class just use the base class virtual function.
I do know that I don't need to say virtual in the derived class but it makes it clear what I added to match the virtuals in the QTreeView
Thanks for any help you can give.
#ifndef ROOMTREE_H
#define ROOMTREE_H
#include <QTreeView>
class RoomTree : public QTreeView
{
public:
RoomTree(QWidget *parent = nullptr);
// ~RoomTree();
virtual ~RoomTree();
virtual void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>()) override{return QTreeView::dataChanged(topLeft, bottomRight, roles);}
virtual QModelIndex indexAt(const QPoint &point) const override{return QTreeView::indexAt(point);}
virtual void keyboardSearch(const QString &search) override{return QTreeView::keyboardSearch(search);}
virtual void reset() override{return QTreeView::reset();}
virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) override{return QTreeView::scrollTo(index, hint);}
virtual void selectAll() override{return QTreeView::selectAll();}
virtual void setModel(QAbstractItemModel *model) override{return QTreeView::setModel(model);}
virtual void setRootIndex(const QModelIndex &index) override{return QTreeView::setRootIndex(index);}
virtual void setSelectionModel(QItemSelectionModel *selectionModel) override{return QTreeView::setSelectionModel(selectionModel);}
virtual QRect visualRect(const QModelIndex &index) const override{return QTreeView::visualRect(index);}
protected:
virtual void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const{return QTreeView::drawBranches(painter, rect, index);}
virtual void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const{return QTreeView::drawRow(painter, option, index);}
virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override{return QTreeView::currentChanged(current, previous);}
virtual void dragMoveEvent(QDragMoveEvent *event) override{return QTreeView::dragMoveEvent(event);}
virtual int horizontalOffset() const override{return QTreeView::horizontalOffset();}
virtual bool isIndexHidden(const QModelIndex &index) const override{return QTreeView::isIndexHidden(index);}
virtual void keyPressEvent(QKeyEvent *event) override{return QTreeView::keyPressEvent(event);}
virtual void mouseDoubleClickEvent(QMouseEvent *event) override{return QTreeView::mouseDoubleClickEvent(event);}
virtual void mouseMoveEvent(QMouseEvent *event) override{return QTreeView::mouseMoveEvent(event);}
virtual void mousePressEvent(QMouseEvent *event) override{return QTreeView::mousePressEvent(event);}
virtual void mouseReleaseEvent(QMouseEvent *event) override{return QTreeView::mouseReleaseEvent(event);}
virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override{return QTreeView::moveCursor(cursorAction, modifiers);}
virtual void paintEvent(QPaintEvent *event) override{return QTreeView::paintEvent(event);}
virtual void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override{return QTreeView::rowsAboutToBeRemoved(parent, start, end);}
virtual void rowsInserted(const QModelIndex &parent, int start, int end) override{return QTreeView::rowsInserted(parent, start, end);}
virtual void scrollContentsBy(int dx, int dy) override{return QTreeView::scrollContentsBy(dx, dy);}
virtual QModelIndexList selectedIndexes() const override{return QTreeView::selectedIndexes();}
virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override{return QTreeView::selectionChanged(selected, deselected);}
virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override{return QTreeView::setSelection(rect, command);}
virtual int sizeHintForColumn(int column) const override{return QTreeView::sizeHintForColumn(column);}
virtual void timerEvent(QTimerEvent *event) override{return QTreeView::timerEvent(event);}
virtual void updateGeometries() override{return QTreeView::updateGeometries();}
virtual int verticalOffset() const override{return QTreeView::verticalOffset();}
virtual bool viewportEvent(QEvent *event) override{return QTreeView::viewportEvent(event);}
virtual QSize viewportSizeHint() const override{return QTreeView::viewportSizeHint();}
virtual QRegion visualRegionForSelection(const QItemSelection &selection) const override{return QTreeView::visualRegionForSelection(selection);}
};
#endif // ROOMTREE_H