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 2016

    @gabor53 said in Undefined reference error:

    MaterialDelegate::MaterialDelegate(QObject)'

    It says it dont have such constructor.

    Show the class definition.



  • @mrjj
    materialdelegate.h:

    #ifndef MATERIALDELEGATE_H
    #define MATERIALDELEGATE_H
    
    #include <QComboBox>
    #include <QObject>
    #include <QString>
    #include <QSqlQuery>
    #include <QStyledItemDelegate>
    #include <QVBoxLayout>
    #include <QWidget>
    
    class MaterialDelegate : public QStyledItemDelegate {
      Q_OBJECT
    
     public:
      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;
    
    
     signals:
    
     public slots:
    };
    
    #endif // MATERIALDELEGATE_H
    
    

  • Qt Champions 2016

    Hi
    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

    -Michael.


  • Lifetime Qt Champion

    Hi,

    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
    Hi,
    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.