Undefined reference error

  • Hi,
    I have this setItemDelegateForColumn line:

     QSqlTableModel* fixModel = new QSqlTableModel(this);
      fixModel->setTable ("Items");
      fixModel->setEditStrategy (QSqlTableModel::OnRowChange);
      fixModel->setSort (2, Qt::DescendingOrder);
      fixModel->select ();
      ui->tableView_Fix->setModel (fixModel);
      ui->tableView_Fix->setItemDelegateForColumn (4, new MaterialDelegate(this));
      ui->tableView_Fix->setItemDelegateForColumn(2, new FixViewDelegate(this));
      ui->tableView_Fix->setItemDelegateForColumn (3, new WhatFixViewDelegate(this));

    Since I added MaterialDelegate I get this error:
    undefined reference to `MaterialDelegate::MaterialDelegate(QObject)'*
    I read it might be a bug, but how can I go around it and assign the delegate?

  • Qt Champions 2017

    @gabor53 said in Undefined reference error:


    It says it dont have such constructor.

    Show the class definition.

  • @mrjj

    #include <QComboBox>
    #include <QObject>
    #include <QString>
    #include <QSqlQuery>
    #include <QStyledItemDelegate>
    #include <QVBoxLayout>
    #include <QWidget>
    class MaterialDelegate : public QStyledItemDelegate {
      QSqlDatabase db;
      explicit MaterialDelegate(QObject* parent = Q_NULLPTR);
      QWidget*   createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;
      void setEditorData(QWidget* editor, const QModelIndex& index) const;
      void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const;
      void setModelData(QWidget* editor, QAbstractItemModel* fixModel, const QModelIndex& index) const;
     public slots:

  • Qt Champions 2017

    seems fine.
    Delete all files in your build folder and run qmake and rebuild all.

  • @mrjj
    Same error.

  • Hi @gabor53

    this is probably derived from a QObject * and you assume implicit conversion. But the explicit keyword in the MaterialDelegatecontructor does not allow for it: http://en.cppreference.com/w/cpp/language/explicit


  • Lifetime Qt Champion


    Might be a silly question but did you implement that constructor ?

    On a side note, there's not need for that db member variable.

  • @SGaist
    Yes, implemented it.

  • I completely deleted and recreated materialdelegate and now it work. Still don't know what was wrong with the previous file.

Log in to reply

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.