Important: Please read the Qt Code of Conduct -

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?

  • Lifetime Qt Champion

    @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:

  • Lifetime Qt Champion

    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:


  • 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