Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Link Error when inherit from QQuickGridView

Link Error when inherit from QQuickGridView

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
9 Posts 2 Posters 1.1k Views
  • 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.
  • M Offline
    M Offline
    Manohar Raju
    wrote on last edited by
    #1

    I am defining new cIass which is deriving from QQuickGridView to override some of base functions, but getting link failed errors.
    Anybody who can help?

    #include <QtGlobal>
    #include <private/qquickgridview_p.h>

    GridViewQuickItemGeneric::GridViewQuickItemGeneric(QQuickItem* parent)
    : QQuickGridView(parent)
    {}

    bool GridViewQuickItemGeneric::refreshDrawing()
    {
    return true;
    }

    Getting below link errors
    mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QQuickGridView::staticMetaObject" (?staticMetaObject@QQuickGridView@@2UQMetaObject@@B)
    mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual void * __cdecl QQuickGridView::qt_metacast(char const *)" (?qt_metacast@QQuickGridView@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacast(char const *)" (?qt_metacast@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAPEAXPEBD@Z)
    mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual int __cdecl QQuickGridView::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QQuickGridView@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl QQuickGridView::QQuickGridView(class QQuickItem *)" (??0QQuickGridView@@QEAA@PEAVQQuickItem@@@Z) referenced in function "public: __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::GridViewQuickItemGeneric(class QQuickItem *)" (??0GridViewQuickItemGeneric@RHQt@HmiGfx@@QEAA@PEAVQQuickItem@@@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl QQuickGridView::~QQuickGridView(void)" (??1QQuickGridView@@UEAA@XZ) referenced in function "public: virtual __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::~GridViewQuickItemGeneric(void)" (??1GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAA@XZ)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightFollowsCurrentItem(bool)" (?setHighlightFollowsCurrentItem@QQuickGridView@@UEAAX_N@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightMoveDuration(int)" (?setHighlightMoveDuration@QQuickGridView@@UEAAXH@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::viewportMoved(class QFlags<enum Qt::Orientation>)" (?viewportMoved@QQuickGridView@@MEAAXV?$QFlags@W4Orientation@Qt@@@@@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::keyPressEvent(class QKeyEvent *)" (?keyPressEvent@QQuickGridView@@MEAAXPEAVQKeyEvent@@@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::geometryChanged(class QRectF const &,class QRectF const &)" (?geometryChanged@QQuickGridView@@MEAAXAEBVQRectF@@0@Z)
    GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::initItem(int,class QObject *)" (?initItem@QQuickGridView@@MEAAXHPEAVQObject@@@Z)

    But When i inherit from QQuickTableView, I didn't get any link error.

    Thanks in advance.

    jsulmJ 1 Reply Last reply
    0
    • M Manohar Raju

      I am defining new cIass which is deriving from QQuickGridView to override some of base functions, but getting link failed errors.
      Anybody who can help?

      #include <QtGlobal>
      #include <private/qquickgridview_p.h>

      GridViewQuickItemGeneric::GridViewQuickItemGeneric(QQuickItem* parent)
      : QQuickGridView(parent)
      {}

      bool GridViewQuickItemGeneric::refreshDrawing()
      {
      return true;
      }

      Getting below link errors
      mocs_compilation.cpp.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QQuickGridView::staticMetaObject" (?staticMetaObject@QQuickGridView@@2UQMetaObject@@B)
      mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual void * __cdecl QQuickGridView::qt_metacast(char const *)" (?qt_metacast@QQuickGridView@@UEAAPEAXPEBD@Z) referenced in function "public: virtual void * __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacast(char const *)" (?qt_metacast@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAPEAXPEBD@Z)
      mocs_compilation.cpp.obj : error LNK2019: unresolved external symbol "public: virtual int __cdecl QQuickGridView::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QQuickGridView@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) referenced in function "public: virtual int __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: __cdecl QQuickGridView::QQuickGridView(class QQuickItem *)" (??0QQuickGridView@@QEAA@PEAVQQuickItem@@@Z) referenced in function "public: __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::GridViewQuickItemGeneric(class QQuickItem *)" (??0GridViewQuickItemGeneric@RHQt@HmiGfx@@QEAA@PEAVQQuickItem@@@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl QQuickGridView::~QQuickGridView(void)" (??1QQuickGridView@@UEAA@XZ) referenced in function "public: virtual __cdecl HmiGfx::RHQt::GridViewQuickItemGeneric::~GridViewQuickItemGeneric(void)" (??1GridViewQuickItemGeneric@RHQt@HmiGfx@@UEAA@XZ)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightFollowsCurrentItem(bool)" (?setHighlightFollowsCurrentItem@QQuickGridView@@UEAAX_N@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl QQuickGridView::setHighlightMoveDuration(int)" (?setHighlightMoveDuration@QQuickGridView@@UEAAXH@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::viewportMoved(class QFlags<enum Qt::Orientation>)" (?viewportMoved@QQuickGridView@@MEAAXV?$QFlags@W4Orientation@Qt@@@@@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::keyPressEvent(class QKeyEvent *)" (?keyPressEvent@QQuickGridView@@MEAAXPEAVQKeyEvent@@@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::geometryChanged(class QRectF const &,class QRectF const &)" (?geometryChanged@QQuickGridView@@MEAAXAEBVQRectF@@0@Z)
      GridViewQuickItemGeneric.cpp.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QQuickGridView::initItem(int,class QObject *)" (?initItem@QQuickGridView@@MEAAXHPEAVQObject@@@Z)

      But When i inherit from QQuickTableView, I didn't get any link error.

      Thanks in advance.

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @Manohar-Raju Please show the header file of your class

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Manohar Raju
        wrote on last edited by
        #3

        @jsulm

        Here is my header file
        #ifndef GRIDVIEWQUICKITEMGENERIC_H
        #define GRIDVIEWQUICKITEMGENERIC_H

        #include <QtGlobal>
        #include <private/qquickgridview_p.h> // for qquickgridview

        class GridViewQuickItemGeneric : public QQuickGridView
        {
        Q_OBJECT
        public:
        explicit GridViewQuickItemGeneric(QQuickItem* parent = nullptr);
        ~GridViewQuickItemGeneric() override = default;

        bool refreshDrawing();
        

        };
        #endif // GRIDVIEWQUICKITEMGENERIC_H

        jsulmJ 1 Reply Last reply
        0
        • M Manohar Raju

          @jsulm

          Here is my header file
          #ifndef GRIDVIEWQUICKITEMGENERIC_H
          #define GRIDVIEWQUICKITEMGENERIC_H

          #include <QtGlobal>
          #include <private/qquickgridview_p.h> // for qquickgridview

          class GridViewQuickItemGeneric : public QQuickGridView
          {
          Q_OBJECT
          public:
          explicit GridViewQuickItemGeneric(QQuickItem* parent = nullptr);
          ~GridViewQuickItemGeneric() override = default;

          bool refreshDrawing();
          

          };
          #endif // GRIDVIEWQUICKITEMGENERIC_H

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #4

          @Manohar-Raju Did you try a complete rebuild: delete build folder, run qmake and build?

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Manohar Raju
            wrote on last edited by
            #5

            @jsulm Yeah, I did clean build by deleting build folder but no use. Still getting same link error.

            jsulmJ 1 Reply Last reply
            0
            • M Manohar Raju

              @jsulm Yeah, I did clean build by deleting build folder but no use. Still getting same link error.

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #6

              @Manohar-Raju Can you show your pro file?

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Manohar Raju
                wrote on last edited by
                #7

                @jsulm
                I have removed company related files and macros from CmakeFile.txt and here copied the generic file.

                CMAKE_MINIMUM_REQUIRED(VERSION 3.14.3 FATAL_ERROR)

                project(GfxQtRH)
                SET(PROJECT_NAME_BACKUP ${PROJECT_NAME})
                SET(PROJECT_NAME ${PROJECT_NAME}_objectlib)

                SET(QMLRESOURCES)
                find_package(Qt5Quick REQUIRED)
                if(Qt5QuickCompiler_FOUND)
                message(STATUS "Qt5QuickCompiler found, using it")
                qtquick_compiler_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
                else()
                qt5_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
                endif()

                target_sources(${PROJECT_NAME} PRIVATE
                "GridViewQuickItemGeneric.cpp"

                target_sources(${PROJECT_NAME} PRIVATE
                "GridViewQuickItemGeneric.h"

                RTIL_LINK_LIBRARIES(
                Qt5::Quick Qt5::QuickPrivate
                Qt5::Gui Qt5::GuiPrivate
                Qt5::Core Qt5::CorePrivate
                Qt5::Qml Qt5::QmlPrivate
                Qt5::Network Qt5::Widgets
                Qt5::Svg Qt5::QuickTemplates2Private
                )

                jsulmJ 1 Reply Last reply
                0
                • M Manohar Raju

                  @jsulm
                  I have removed company related files and macros from CmakeFile.txt and here copied the generic file.

                  CMAKE_MINIMUM_REQUIRED(VERSION 3.14.3 FATAL_ERROR)

                  project(GfxQtRH)
                  SET(PROJECT_NAME_BACKUP ${PROJECT_NAME})
                  SET(PROJECT_NAME ${PROJECT_NAME}_objectlib)

                  SET(QMLRESOURCES)
                  find_package(Qt5Quick REQUIRED)
                  if(Qt5QuickCompiler_FOUND)
                  message(STATUS "Qt5QuickCompiler found, using it")
                  qtquick_compiler_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
                  else()
                  qt5_add_resources(QMLRESOURCES ${quickcompiler_qrcfiles})
                  endif()

                  target_sources(${PROJECT_NAME} PRIVATE
                  "GridViewQuickItemGeneric.cpp"

                  target_sources(${PROJECT_NAME} PRIVATE
                  "GridViewQuickItemGeneric.h"

                  RTIL_LINK_LIBRARIES(
                  Qt5::Quick Qt5::QuickPrivate
                  Qt5::Gui Qt5::GuiPrivate
                  Qt5::Core Qt5::CorePrivate
                  Qt5::Qml Qt5::QmlPrivate
                  Qt5::Network Qt5::Widgets
                  Qt5::Svg Qt5::QuickTemplates2Private
                  )

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  @Manohar-Raju If you use CMake then set https://cmake.org/cmake/help/latest/prop_tgt/AUTOMOC.html

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    Manohar Raju
                    wrote on last edited by
                    #9

                    @jsulm I am already setting automac as below

                    SET(CMAKE_INCLUDE_CURRENT_DIR ON)

                    Instruct CMake to run moc automatically when needed.

                    SET(CMAKE_AUTOMOC ON)

                    add_compile_definitions(
                    TRACEMESSAGE_USE_QT
                    QT_NO_CAST_FROM_ASCII
                    QT_NO_CAST_TO_ASCII
                    )

                    Sorry i missed to copy these lines in earlier post. But i am setting these flags. With this macros also getting link error.

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved