Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Solved Undefined reference error

    General and Desktop
    4
    9
    1674
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      gabor53 last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • mrjj
        mrjj Lifetime Qt Champion last edited by

        @gabor53 said in Undefined reference error:

        MaterialDelegate::MaterialDelegate(QObject)'

        It says it dont have such constructor.

        Show the class definition.

        G 1 Reply Last reply Reply Quote 0
        • G
          gabor53 @mrjj last edited by

          @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
          
          
          1 Reply Last reply Reply Quote 0
          • mrjj
            mrjj Lifetime Qt Champion last edited by

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

            G 1 Reply Last reply Reply Quote 0
            • G
              gabor53 @mrjj last edited by

              @mrjj
              Same error.

              m.sue 1 Reply Last reply Reply Quote 0
              • m.sue
                m.sue @gabor53 last edited by

                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.

                1 Reply Last reply Reply Quote 3
                • SGaist
                  SGaist Lifetime Qt Champion last edited by

                  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.

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    gabor53 @SGaist last edited by

                    @SGaist
                    Hi,
                    Yes, implemented it.

                    1 Reply Last reply Reply Quote 0
                    • G
                      gabor53 last edited by

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

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post