Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt3DExtras/QPhongMaterial: No such file or directory
Forum Update on Monday, May 27th 2025

Qt3DExtras/QPhongMaterial: No such file or directory

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 257 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.
  • T Offline
    T Offline
    tugbakara
    wrote on last edited by
    #1

    Hi, I am using this project. I want to add 3 .dae file to my 2D ros map in project display_occ_map.cpp file as:

    #include "display/display_occ_map.h"
    #include <QtConcurrent>
    #include <algorithm>
    #include <iostream>
    
    // Qt3D includes for 3D rendering
    #include <Qt3DRender/QMesh>
    #include <Qt3DExtras/QPhongMaterial>
    #include <Qt3DCore/QEntity>
    #include <Qt3DCore/QTransform>
    #include <Qt3DExtras/QPlaneMesh>
    #include <Qt3DExtras/Qt3DWindow>
    #include <Qt3DExtras/QOrbitCameraController>
    #include <Qt3DRender/QCamera>
    #include <QApplication>
    #include <QWidget>
    #include <QHBoxLayout>
    
    namespace Display {
    
    class Display3DMap {
    public:
        Display3DMap() {
            Init3DMap();
        }
    
        void Init3DMap() {
            // Create a Qt3D window
            view = new Qt3DExtras::Qt3DWindow();
            QWidget *container = QWidget::createWindowContainer(view);
            container->setMinimumSize(QSize(400, 400));
            container->setMaximumSize(QSize(800, 800));
    
            // Root entity
            rootEntity = new Qt3DCore::QEntity();
    
            // Camera setup
            cameraEntity = view->camera();
            cameraEntity->lens()->setPerspectiveProjection(45.0f, 16.0f / 9.0f, 0.1f, 1000.0f);
            cameraEntity->setPosition(QVector3D(0, 0, 20.0f));
            cameraEntity->setUpVector(QVector3D(0, 1, 0));
            cameraEntity->setViewCenter(QVector3D(0, 0, 0));
    
            // Plane mesh to represent the occupancy map in 3D
            planeEntity = new Qt3DCore::QEntity(rootEntity);
            planeMesh = new Qt3DExtras::QPlaneMesh();
            planeMesh->setWidth(10);
            planeMesh->setHeight(10);
    
            // Transform for the plane mesh
            planeTransform = new Qt3DCore::QTransform();
            planeTransform->setScale(1.0f);
            planeTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), -90));
    
            // Basic material for the plane
            material = new Qt3DExtras::QPhongMaterial();
            material->setDiffuse(QColor(QRgb(0xFFFFFF)));
    
            planeEntity->addComponent(planeMesh);
            planeEntity->addComponent(planeTransform);
            planeEntity->addComponent(material);
    
            // Load the .dae model
            daeEntity = new Qt3DCore::QEntity(rootEntity);
            daeMesh = new Qt3DRender::QMesh();
            daeMesh->setSource(QUrl::fromLocalFile("/home/ubuntubtm.dae"));  // Change this to the actual .dae file path
    
            // Transform for the .dae mesh
            daeTransform = new Qt3DCore::QTransform();
            daeTransform->setScale(1.0f);  // Adjust scale as needed
            daeTransform->setTranslation(QVector3D(0, 0, 0));  // Adjust position as needed
    
            // Basic material for the .dae model
            daeMaterial = new Qt3DExtras::QPhongMaterial();
            daeMaterial->setDiffuse(QColor(QRgb(0xCCCCCC)));  // Gray color for .dae model
    
            daeEntity->addComponent(daeMesh);
            daeEntity->addComponent(daeTransform);
            daeEntity->addComponent(daeMaterial);
    
            // Camera controls
            auto *camController = new Qt3DExtras::QOrbitCameraController(rootEntity);
            camController->setLinearSpeed(50.0f);
            camController->setLookSpeed(180.0f);
            camController->setCamera(cameraEntity);
    
            view->setRootEntity(rootEntity);
        }
    
        void Update3DMapData(const OccupancyMap &mapData) {
            // Example: convert your occupancy map to a 3D heightmap and update plane mesh or generate a new geometry.
            // This is where you can implement how to visualize the 3D data based on occupancy values.
        }
    
        QWidget *getContainer() {
            return QWidget::createWindowContainer(view);
        }
    
    private:
        Qt3DExtras::Qt3DWindow *view;
        Qt3DCore::QEntity *rootEntity;
        Qt3DCore::QEntity *planeEntity;
        Qt3DCore::QEntity *daeEntity;  // .dae entity
        Qt3DRender::QCamera *cameraEntity;
        Qt3DExtras::QPlaneMesh *planeMesh;
        Qt3DRender::QMesh *daeMesh;  // .dae mesh
        Qt3DCore::QTransform *planeTransform;
        Qt3DCore::QTransform *daeTransform;  // .dae mesh transform
        Qt3DExtras::QPhongMaterial *material;
        Qt3DExtras::QPhongMaterial *daeMaterial;  // Material for .dae model
    };
    
    // Your existing DisplayOccMap class
    DisplayOccMap::DisplayOccMap(const std::string &display_type,
                                 const int &z_value, std::string parent_name)
        : VirtualDisplay(display_type, z_value, parent_name) {
      SetMoveEnable(true);
    
      // Initialize 3D map visualization
      display_3d_map_ = new Display3DMap();
    }
    
    bool DisplayOccMap::UpdateData(const std::any &data) {
      try {
        if (data.type() == typeid(OccupancyMap)) {
          map_data_ = std::any_cast<OccupancyMap>(data);
    
          // Update the 3D map with new occupancy data
          display_3d_map_->Update3DMapData(map_data_);
        }
      } catch (const std::bad_any_cast &e) {
        std::cout << e.what() << '\n';
        return false;
      }
    
      ParseOccupyMap();
    
      return true;
    }
    
    void DisplayOccMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
      painter->drawImage(0, 0, map_image_);
    }
    
    void DisplayOccMap::ParseOccupyMap() {
      QtConcurrent::run([this]() {
        map_image_ = QImage(map_data_.Cols(), map_data_.Rows(), QImage::Format_RGB32);
    
        for (int i = 0; i < map_data_.Cols(); i++) {
          for (int j = 0; j < map_data_.Rows(); j++) {
            double map_value = map_data_(j, i);
            QColor color;
            if (map_value == 100) {
              color = Qt::black;  // Black for occupied space
            } else if (map_value == 0) {
              color = Qt::white;  // White for free space
            } else if (map_value == 255) {
              color = Qt::gray;   // Gray for unknown space
            } else {
              color = Qt::white;
            }
            map_image_.setPixel(i, j, color.rgb());
          }
        }
    
        SetBoundingRect(QRectF(0, 0, map_image_.width(), map_image_.height()));
        update();
        double x, y;
        map_data_.xy2ScenePose(0, 0, x, y);
        CenterOnScene(mapToScene(x, y));
      });
    }
    
    void DisplayOccMap::EraseMapRange(const QPointF &pose, double range) {
      float x = pose.x();
      float y = pose.y();
      if (x < 0 || x >= map_image_.width() || y < 0 || y >= map_image_.height()) {
        return;
      }
    
      int left = qMax(0, static_cast<int>(x - range));
      int top = qMax(0, static_cast<int>(y - range));
      int right = qMin(map_image_.width() - 1, static_cast<int>(x + range));
      int bottom = qMin(map_image_.height() - 1, static_cast<int>(y + range));
    
      for (int i = left; i <= right; ++i) {
        for (int j = top; j <= bottom; ++j) {
          map_image_.setPixelColor(i, j, Qt::white);
        }
      }
      update();
    }
    
    OccupancyMap DisplayOccMap::GetOccupancyMap() {
      OccupancyMap map = map_data_;
      for (int i = 0; i < map_image_.width(); i++) {
        for (int j = 0; j < map_image_.height(); j++) {
          QRgb pixelValue = map_image_.pixel(i, j);
          if (pixelValue == QColor(Qt::black).rgb()) {
            map(j, i) = 100;
          } else if (pixelValue == QColor(Qt::white).rgb()) {
            map(j, i) = 0;
          } else if (pixelValue == QColor(Qt::gray).rgb()) {
            map(j, i) = 255;
          }
        }
      }
      return map;
    }
    
    void DisplayOccMap::StartDrawLine(const QPointF &point) {
      begin_point_ = point;
    }
    
    void DisplayOccMap::DrawingLine(const QPointF &point) {
      QPointF start = mapFromScene(begin_point_);
      QPointF end = mapFromScene(point);
    
      begin_point_ = point;
    }
    
    void DisplayOccMap::StopDrawLine(const QPointF &point) {
      QPointF end_point = point;
    }
    
    }  // namespace Display
    

    but when I try to build it with cmake I am getting this error:

    Ros_Qt5_Gui_App$ sh build_ros2.sh 
    -- Forced to use Qt version 5
    BUILD_WITH_CHANNEL_AUTO
    Auto USE ROS2 channel
    -- Found ament_cmake: 1.3.6 (/opt/ros/humble/share/ament_cmake/cmake)
    -- Found rclcpp: 16.0.7 (/opt/ros/humble/share/rclcpp/cmake)
    -- Found rosidl_generator_c: 3.1.5 (/opt/ros/humble/share/rosidl_generator_c/cmake)
    -- Found rosidl_adapter: 3.1.5 (/opt/ros/humble/share/rosidl_adapter/cmake)
    -- Found rosidl_generator_cpp: 3.1.5 (/opt/ros/humble/share/rosidl_generator_cpp/cmake)
    -- Using all available rosidl_typesupport_c: rosidl_typesupport_fastrtps_c;rosidl_typesupport_introspection_c
    -- Using all available rosidl_typesupport_cpp: rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_introspection_cpp
    -- Found rmw_implementation_cmake: 6.1.1 (/opt/ros/humble/share/rmw_implementation_cmake/cmake)
    -- Found rmw_cyclonedds_cpp: 1.3.4 (/opt/ros/humble/share/rmw_cyclonedds_cpp/cmake)
    -- Using RMW implementation 'rmw_cyclonedds_cpp' as default
    -- Found nav_msgs: 4.2.3 (/opt/ros/humble/share/nav_msgs/cmake)
    -- Found tf2: 0.25.5 (/opt/ros/humble/share/tf2/cmake)
    -- Found tf2_ros: 0.25.5 (/opt/ros/humble/share/tf2_ros/cmake)
    -- Found tf2_kdl: 0.25.5 (/opt/ros/humble/share/tf2_kdl/cmake)
    -- Found eigen3_cmake_module: 0.1.1 (/opt/ros/humble/share/eigen3_cmake_module/cmake)
    -- Ensuring Eigen3 include directory is part of orocos-kdl CMake target
    -- Found tf2_geometry_msgs: 0.25.5 (/opt/ros/humble/share/tf2_geometry_msgs/cmake)
    -- Found sensor_msgs: 4.2.3 (/opt/ros/humble/share/sensor_msgs/cmake)
    -- Found cv_bridge: 3.2.1 (/opt/ros/humble/share/cv_bridge/cmake)
    -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread 
    -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: filesystem 
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/build
    [  0%] Automatic MOC for target qt5advanceddocking
    [  0%] Built target qt5advanceddocking_autogen
    Consolidate compiler generated dependencies of target qt5advanceddocking
    [ 18%] Built target qt5advanceddocking
    Consolidate compiler generated dependencies of target yaml-cpp
    [ 39%] Built target yaml-cpp
    Consolidate compiler generated dependencies of target yaml-cpp-sandbox
    [ 41%] Built target yaml-cpp-sandbox
    Consolidate compiler generated dependencies of target yaml-cpp-parse
    [ 43%] Built target yaml-cpp-parse
    Consolidate compiler generated dependencies of target yaml-cpp-read
    [ 44%] Built target yaml-cpp-read
    Consolidate compiler generated dependencies of target common
    [ 47%] Built target common
    Consolidate compiler generated dependencies of target channel
    [ 48%] Built target channel
    Consolidate compiler generated dependencies of target channel_ros2
    [ 50%] Built target channel_ros2
    Consolidate compiler generated dependencies of target plugin
    [ 52%] Built target plugin
    Consolidate compiler generated dependencies of target mainwindow
    [ 53%] Building CXX object mainwindow/CMakeFiles/mainwindow.dir/src/display/display_occ_map.cpp.o
    In file included from /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/mainwindow/src/display/display_occ_map.cpp:1:
    /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/mainwindow/include/display/display_occ_map.h:16:10: fatal error: Qt3DExtras/QPhongMaterial: No such file or directory
       16 | #include <Qt3DExtras/QPhongMaterial>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    compilation terminated.
    make[2]: *** [mainwindow/CMakeFiles/mainwindow.dir/build.make:383: mainwindow/CMakeFiles/mainwindow.dir/src/display/display_occ_map.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:1383: mainwindow/CMakeFiles/mainwindow.dir/all] Error 2
    make: *** [Makefile:146: all] Error 2
    

    I want to note that I have installed and can verify necesarry libraries with:

    dpkg -l | grep libqt
    ii  libqt53danimation5:arm64                           5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D animation module
    ii  libqt53dcore5:arm64                                5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D module
    ii  libqt53dextras5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D extras
    ii  libqt53dinput5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Input module
    ii  libqt53dlogic5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D logic module
    ii  libqt53dquick5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick module
    ii  libqt53dquickanimation5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick animation module
    ii  libqt53dquickextras5:arm64                         5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick extras
    ii  libqt53dquickinput5:arm64                          5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick input
    ii  libqt53dquickrender5:arm64                         5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick Renderer module
    ii  libqt53dquickscene2d5:arm64                        5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick scene module
    ii  libqt53drender5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Renderer module
    ii  libqt5charts5:arm64                                5.12.8-0ubuntu1                       arm64        Qt charts shared library
    ii  libqt5concurrent5:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 concurrent module
    ii  libqt5core5a:arm64                                 5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 core module
    ii  libqt5dbus5:arm64                                  5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 D-Bus module
    ii  libqt5designer5:arm64                              5.12.8-0ubuntu1                       arm64        Qt 5 designer module
    ii  libqt5designercomponents5:arm64                    5.12.8-0ubuntu1                       arm64        Qt 5 Designer components module
    ii  libqt5gui5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 GUI module
    ii  libqt5help5:arm64                                  5.12.8-0ubuntu1                       arm64        Qt 5 help module
    ii  libqt5location5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt Location module
    ii  libqt5location5-plugins:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt Location module - geolocation plugins
    ii  libqt5network5:arm64                               5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 network module
    ii  libqt5opengl5:arm64                                5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 OpenGL module
    ii  libqt5opengl5-dev:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 OpenGL library development files
    ii  libqt5positioning5:arm64                           5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module
    ii  libqt5positioning5-plugins:arm64                   5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module - position plugins
    ii  libqt5positioningquick5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module - Qt Quick module
    ii  libqt5printsupport5:arm64                          5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 print support module
    ii  libqt5qml5:arm64                                   5.12.8-0ubuntu1                       arm64        Qt 5 QML module
    ii  libqt5quick5:arm64                                 5.12.8-0ubuntu1                       arm64        Qt 5 Quick library
    ii  libqt5quickcontrols2-5:arm64                       5.12.8+dfsg-0ubuntu1                  arm64        Qt 5 Quick Controls 2 library
    ii  libqt5quickparticles5:arm64                        5.12.8-0ubuntu1                       arm64        Qt 5 Quick particles module
    ii  libqt5quickshapes5:arm64                           5.12.8-0ubuntu1                       arm64        Qt 5 Quick Shapes module
    ii  libqt5quicktemplates2-5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt 5 Quick Templates 2 library
    ii  libqt5quicktest5:arm64                             5.12.8-0ubuntu1                       arm64        Qt 5 Quick Test library
    ii  libqt5quickwidgets5:arm64                          5.12.8-0ubuntu1                       arm64        Qt 5 Quick Widgets library
    ii  libqt5sensors5:arm64                               5.12.8-0ubuntu1                       arm64        Qt Sensors module
    ii  libqt5serialport5:arm64                            5.12.8-0ubuntu1                       arm64        Qt 5 serial port support
    ii  libqt5sql5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 SQL module
    ii  libqt5sql5-sqlite:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 SQLite 3 database driver
    ii  libqt5svg5:arm64                                   5.12.8-0ubuntu1                       arm64        Qt 5 SVG module
    ii  libqt5svg5-dev:arm64                               5.12.8-0ubuntu1                       arm64        Qt 5 SVG module development files
    ii  libqt5test5:arm64                                  5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 test module
    ii  libqt5webchannel5:arm64                            5.12.8-0ubuntu1                       arm64        Web communication library for Qt
    ii  libqt5webkit5:arm64                                5.212.0~alpha4-1ubuntu2.1             arm64        Web content engine library for Qt
    ii  libqt5webkit5-dev:arm64                            5.212.0~alpha4-1ubuntu2.1             arm64        Web content engine library for Qt - development files
    ii  libqt5widgets5:arm64                               5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 widgets module
    ii  libqt5x11extras5:arm64                             5.12.8-0ubuntu1                       arm64        Qt 5 X11 extras
    ii  libqt5xml5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 XML module
    

    for displa file's CMakeLists.txt I have made changes because firstly, 3D libraries cannot be found from cmake even if it exists.
    Here is the cmake file that I changed:

    include(TargetNameHelper)
    GetTargetName()
    
    find_package(OpenCV REQUIRED)
    include_directories(${OpenCV_INCLUDE_DIRS})
    find_package(Qt5 COMPONENTS Widgets Concurrent Svg REQUIRED)
    
    link_directories("/usr/lib/aarch64-linux-gnu")
    
    file(GLOB_RECURSE SOURCE_FILE  CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR} src/*.cpp src/*.cc)
    list(FILTER SOURCE_FILE EXCLUDE REGEX "(.*_test\\.cpp$)|(.*_test\\.cc$)")
    file(GLOB_RECURSE UI_FILE CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}  ui/*.ui)
    file(GLOB_RECURSE QRC_FILE  CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}  resource/*.qrc)
    file(GLOB_RECURSE INCLUDE_FILE CONFIGURE_DEPENDS  ${CMAKE_SOURCE_DIR}  include/*.h *.hpp)
    
    ####qt moc
    qt5_wrap_ui(QT_UI_HPP ${UI_FILE})
    qt5_wrap_cpp(QT_MOC_HPP ${INCLUDE_FILE})
    qt5_add_resources(QT_RESOUCE_HPP ${QRC_FILE})
    set(SO_FILES
        /usr/lib/aarch64-linux-gnu/libQt53DCore.so
        /usr/lib/aarch64-linux-gnu/libQt53DExtras.so.5
        /usr/lib/aarch64-linux-gnu/libQt53DRender.so
        # Add other .so files here
    )
    
    #向可执行程序添加源文件
    add_library(${TARGET_NAME} STATIC
        ${SOURCE_FILE}
        ${INCLUDE_FILE}
        ${UI_FILE}
        ${QT_MOC_HPP}
        ${QRC_FILE}
        ${QT_RESOUCE_HPP}
      )
      #项目包含的头文件路径
    
    target_include_directories(
      ${TARGET_NAME}
      PUBLIC
    	include/
      include/display/
     ${CMAKE_CURRENT_BINARY_DIR}
    )
    target_link_libraries(${TARGET_NAME} Qt5::Widgets Qt5::Core Qt5::Concurrent Qt5::Svg ${SO_FILES} qt${QT_VERSION_MAJOR}advanceddocking json_struct common basic channel plugin ${OpenCV_LIBS})
    

    lastly, in project there exists .pro file and I add 3D libs to Qt += part as follows:

    ADS_OUT_ROOT = $${OUT_PWD}/..
    CONFIG += c++14
    CONFIG += debug_and_release
    TARGET = $$qtLibraryTarget(qtadvanceddocking)
    DEFINES += QT_DEPRECATED_WARNINGS
    TEMPLATE = lib
    DESTDIR = $${ADS_OUT_ROOT}/lib
    QT += core gui widgets 3dcore 3drender 3dextras
    
    !adsBuildStatic {
    	CONFIG += shared
        DEFINES += ADS_SHARED_EXPORT
    }
    adsBuildStatic {
    	CONFIG += staticlib
        DEFINES += ADS_STATIC
    }
    
    windows {
    	# MinGW
    	*-g++* {
    		QMAKE_CXXFLAGS += -Wall -Wextra -pedantic
    	}
    	# MSVC
    	*-msvc* {
                    QMAKE_CXXFLAGS += /utf-8
            }
    }
    
    RESOURCES += ads.qrc
    
    HEADERS += \
        ads_globals.h \
        DockAreaWidget.h \
        DockAreaTabBar.h \
        DockContainerWidget.h \
        DockManager.h \
        DockWidget.h \
        DockWidgetTab.h \ 
        DockingStateReader.h \
        FloatingDockContainer.h \
        FloatingDragPreview.h \
        DockOverlay.h \
        DockSplitter.h \
        DockAreaTitleBar_p.h \
        DockAreaTitleBar.h \
        ElidingLabel.h \
        IconProvider.h \
        DockComponentsFactory.h  \
        DockFocusController.h \
        AutoHideDockContainer.h \
        AutoHideSideBar.h \
        AutoHideTab.h \
        PushButton.h \
        ResizeHandle.h
    
    
    SOURCES += \
        ads_globals.cpp \
        DockAreaWidget.cpp \
        DockAreaTabBar.cpp \
        DockContainerWidget.cpp \
        DockManager.cpp \
        DockWidget.cpp \
        DockingStateReader.cpp \
        DockWidgetTab.cpp \
        FloatingDockContainer.cpp \
        FloatingDragPreview.cpp \
        DockOverlay.cpp \
        DockSplitter.cpp \
        DockAreaTitleBar.cpp \
        ElidingLabel.cpp \
        IconProvider.cpp \
        DockComponentsFactory.cpp \
        DockFocusController.cpp \
        AutoHideDockContainer.cpp \
        AutoHideSideBar.cpp \
        AutoHideTab.cpp \
        PushButton.cpp \
        ResizeHandle.cpp
    
    
    unix:!macx {
    HEADERS += linux/FloatingWidgetTitleBar.h
    SOURCES += linux/FloatingWidgetTitleBar.cpp
    LIBS += -lxcb
    QT += gui-private
    }
    
    isEmpty(PREFIX){
    	PREFIX=../installed
    	warning("Install Prefix not set")
    }
    headers.path=$$PREFIX/include
    headers.files=$$HEADERS
    target.path=$$PREFIX/lib
    INSTALLS += headers target
    
    DISTFILES +=
    

    Lastly, I have check the issues like 1,2 and follow given instructions to solve my issue, but they didnt help.
    What could be the problem causes this issue?
    Thanks in advance.

    Pl45m4P 1 Reply Last reply
    0
    • T tugbakara

      Hi, I am using this project. I want to add 3 .dae file to my 2D ros map in project display_occ_map.cpp file as:

      #include "display/display_occ_map.h"
      #include <QtConcurrent>
      #include <algorithm>
      #include <iostream>
      
      // Qt3D includes for 3D rendering
      #include <Qt3DRender/QMesh>
      #include <Qt3DExtras/QPhongMaterial>
      #include <Qt3DCore/QEntity>
      #include <Qt3DCore/QTransform>
      #include <Qt3DExtras/QPlaneMesh>
      #include <Qt3DExtras/Qt3DWindow>
      #include <Qt3DExtras/QOrbitCameraController>
      #include <Qt3DRender/QCamera>
      #include <QApplication>
      #include <QWidget>
      #include <QHBoxLayout>
      
      namespace Display {
      
      class Display3DMap {
      public:
          Display3DMap() {
              Init3DMap();
          }
      
          void Init3DMap() {
              // Create a Qt3D window
              view = new Qt3DExtras::Qt3DWindow();
              QWidget *container = QWidget::createWindowContainer(view);
              container->setMinimumSize(QSize(400, 400));
              container->setMaximumSize(QSize(800, 800));
      
              // Root entity
              rootEntity = new Qt3DCore::QEntity();
      
              // Camera setup
              cameraEntity = view->camera();
              cameraEntity->lens()->setPerspectiveProjection(45.0f, 16.0f / 9.0f, 0.1f, 1000.0f);
              cameraEntity->setPosition(QVector3D(0, 0, 20.0f));
              cameraEntity->setUpVector(QVector3D(0, 1, 0));
              cameraEntity->setViewCenter(QVector3D(0, 0, 0));
      
              // Plane mesh to represent the occupancy map in 3D
              planeEntity = new Qt3DCore::QEntity(rootEntity);
              planeMesh = new Qt3DExtras::QPlaneMesh();
              planeMesh->setWidth(10);
              planeMesh->setHeight(10);
      
              // Transform for the plane mesh
              planeTransform = new Qt3DCore::QTransform();
              planeTransform->setScale(1.0f);
              planeTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), -90));
      
              // Basic material for the plane
              material = new Qt3DExtras::QPhongMaterial();
              material->setDiffuse(QColor(QRgb(0xFFFFFF)));
      
              planeEntity->addComponent(planeMesh);
              planeEntity->addComponent(planeTransform);
              planeEntity->addComponent(material);
      
              // Load the .dae model
              daeEntity = new Qt3DCore::QEntity(rootEntity);
              daeMesh = new Qt3DRender::QMesh();
              daeMesh->setSource(QUrl::fromLocalFile("/home/ubuntubtm.dae"));  // Change this to the actual .dae file path
      
              // Transform for the .dae mesh
              daeTransform = new Qt3DCore::QTransform();
              daeTransform->setScale(1.0f);  // Adjust scale as needed
              daeTransform->setTranslation(QVector3D(0, 0, 0));  // Adjust position as needed
      
              // Basic material for the .dae model
              daeMaterial = new Qt3DExtras::QPhongMaterial();
              daeMaterial->setDiffuse(QColor(QRgb(0xCCCCCC)));  // Gray color for .dae model
      
              daeEntity->addComponent(daeMesh);
              daeEntity->addComponent(daeTransform);
              daeEntity->addComponent(daeMaterial);
      
              // Camera controls
              auto *camController = new Qt3DExtras::QOrbitCameraController(rootEntity);
              camController->setLinearSpeed(50.0f);
              camController->setLookSpeed(180.0f);
              camController->setCamera(cameraEntity);
      
              view->setRootEntity(rootEntity);
          }
      
          void Update3DMapData(const OccupancyMap &mapData) {
              // Example: convert your occupancy map to a 3D heightmap and update plane mesh or generate a new geometry.
              // This is where you can implement how to visualize the 3D data based on occupancy values.
          }
      
          QWidget *getContainer() {
              return QWidget::createWindowContainer(view);
          }
      
      private:
          Qt3DExtras::Qt3DWindow *view;
          Qt3DCore::QEntity *rootEntity;
          Qt3DCore::QEntity *planeEntity;
          Qt3DCore::QEntity *daeEntity;  // .dae entity
          Qt3DRender::QCamera *cameraEntity;
          Qt3DExtras::QPlaneMesh *planeMesh;
          Qt3DRender::QMesh *daeMesh;  // .dae mesh
          Qt3DCore::QTransform *planeTransform;
          Qt3DCore::QTransform *daeTransform;  // .dae mesh transform
          Qt3DExtras::QPhongMaterial *material;
          Qt3DExtras::QPhongMaterial *daeMaterial;  // Material for .dae model
      };
      
      // Your existing DisplayOccMap class
      DisplayOccMap::DisplayOccMap(const std::string &display_type,
                                   const int &z_value, std::string parent_name)
          : VirtualDisplay(display_type, z_value, parent_name) {
        SetMoveEnable(true);
      
        // Initialize 3D map visualization
        display_3d_map_ = new Display3DMap();
      }
      
      bool DisplayOccMap::UpdateData(const std::any &data) {
        try {
          if (data.type() == typeid(OccupancyMap)) {
            map_data_ = std::any_cast<OccupancyMap>(data);
      
            // Update the 3D map with new occupancy data
            display_3d_map_->Update3DMapData(map_data_);
          }
        } catch (const std::bad_any_cast &e) {
          std::cout << e.what() << '\n';
          return false;
        }
      
        ParseOccupyMap();
      
        return true;
      }
      
      void DisplayOccMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
        painter->drawImage(0, 0, map_image_);
      }
      
      void DisplayOccMap::ParseOccupyMap() {
        QtConcurrent::run([this]() {
          map_image_ = QImage(map_data_.Cols(), map_data_.Rows(), QImage::Format_RGB32);
      
          for (int i = 0; i < map_data_.Cols(); i++) {
            for (int j = 0; j < map_data_.Rows(); j++) {
              double map_value = map_data_(j, i);
              QColor color;
              if (map_value == 100) {
                color = Qt::black;  // Black for occupied space
              } else if (map_value == 0) {
                color = Qt::white;  // White for free space
              } else if (map_value == 255) {
                color = Qt::gray;   // Gray for unknown space
              } else {
                color = Qt::white;
              }
              map_image_.setPixel(i, j, color.rgb());
            }
          }
      
          SetBoundingRect(QRectF(0, 0, map_image_.width(), map_image_.height()));
          update();
          double x, y;
          map_data_.xy2ScenePose(0, 0, x, y);
          CenterOnScene(mapToScene(x, y));
        });
      }
      
      void DisplayOccMap::EraseMapRange(const QPointF &pose, double range) {
        float x = pose.x();
        float y = pose.y();
        if (x < 0 || x >= map_image_.width() || y < 0 || y >= map_image_.height()) {
          return;
        }
      
        int left = qMax(0, static_cast<int>(x - range));
        int top = qMax(0, static_cast<int>(y - range));
        int right = qMin(map_image_.width() - 1, static_cast<int>(x + range));
        int bottom = qMin(map_image_.height() - 1, static_cast<int>(y + range));
      
        for (int i = left; i <= right; ++i) {
          for (int j = top; j <= bottom; ++j) {
            map_image_.setPixelColor(i, j, Qt::white);
          }
        }
        update();
      }
      
      OccupancyMap DisplayOccMap::GetOccupancyMap() {
        OccupancyMap map = map_data_;
        for (int i = 0; i < map_image_.width(); i++) {
          for (int j = 0; j < map_image_.height(); j++) {
            QRgb pixelValue = map_image_.pixel(i, j);
            if (pixelValue == QColor(Qt::black).rgb()) {
              map(j, i) = 100;
            } else if (pixelValue == QColor(Qt::white).rgb()) {
              map(j, i) = 0;
            } else if (pixelValue == QColor(Qt::gray).rgb()) {
              map(j, i) = 255;
            }
          }
        }
        return map;
      }
      
      void DisplayOccMap::StartDrawLine(const QPointF &point) {
        begin_point_ = point;
      }
      
      void DisplayOccMap::DrawingLine(const QPointF &point) {
        QPointF start = mapFromScene(begin_point_);
        QPointF end = mapFromScene(point);
      
        begin_point_ = point;
      }
      
      void DisplayOccMap::StopDrawLine(const QPointF &point) {
        QPointF end_point = point;
      }
      
      }  // namespace Display
      

      but when I try to build it with cmake I am getting this error:

      Ros_Qt5_Gui_App$ sh build_ros2.sh 
      -- Forced to use Qt version 5
      BUILD_WITH_CHANNEL_AUTO
      Auto USE ROS2 channel
      -- Found ament_cmake: 1.3.6 (/opt/ros/humble/share/ament_cmake/cmake)
      -- Found rclcpp: 16.0.7 (/opt/ros/humble/share/rclcpp/cmake)
      -- Found rosidl_generator_c: 3.1.5 (/opt/ros/humble/share/rosidl_generator_c/cmake)
      -- Found rosidl_adapter: 3.1.5 (/opt/ros/humble/share/rosidl_adapter/cmake)
      -- Found rosidl_generator_cpp: 3.1.5 (/opt/ros/humble/share/rosidl_generator_cpp/cmake)
      -- Using all available rosidl_typesupport_c: rosidl_typesupport_fastrtps_c;rosidl_typesupport_introspection_c
      -- Using all available rosidl_typesupport_cpp: rosidl_typesupport_fastrtps_cpp;rosidl_typesupport_introspection_cpp
      -- Found rmw_implementation_cmake: 6.1.1 (/opt/ros/humble/share/rmw_implementation_cmake/cmake)
      -- Found rmw_cyclonedds_cpp: 1.3.4 (/opt/ros/humble/share/rmw_cyclonedds_cpp/cmake)
      -- Using RMW implementation 'rmw_cyclonedds_cpp' as default
      -- Found nav_msgs: 4.2.3 (/opt/ros/humble/share/nav_msgs/cmake)
      -- Found tf2: 0.25.5 (/opt/ros/humble/share/tf2/cmake)
      -- Found tf2_ros: 0.25.5 (/opt/ros/humble/share/tf2_ros/cmake)
      -- Found tf2_kdl: 0.25.5 (/opt/ros/humble/share/tf2_kdl/cmake)
      -- Found eigen3_cmake_module: 0.1.1 (/opt/ros/humble/share/eigen3_cmake_module/cmake)
      -- Ensuring Eigen3 include directory is part of orocos-kdl CMake target
      -- Found tf2_geometry_msgs: 0.25.5 (/opt/ros/humble/share/tf2_geometry_msgs/cmake)
      -- Found sensor_msgs: 4.2.3 (/opt/ros/humble/share/sensor_msgs/cmake)
      -- Found cv_bridge: 3.2.1 (/opt/ros/humble/share/cv_bridge/cmake)
      -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: thread 
      -- Found Boost: /usr/lib/aarch64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found version "1.71.0") found components: filesystem 
      -- Configuring done
      -- Generating done
      -- Build files have been written to: /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/build
      [  0%] Automatic MOC for target qt5advanceddocking
      [  0%] Built target qt5advanceddocking_autogen
      Consolidate compiler generated dependencies of target qt5advanceddocking
      [ 18%] Built target qt5advanceddocking
      Consolidate compiler generated dependencies of target yaml-cpp
      [ 39%] Built target yaml-cpp
      Consolidate compiler generated dependencies of target yaml-cpp-sandbox
      [ 41%] Built target yaml-cpp-sandbox
      Consolidate compiler generated dependencies of target yaml-cpp-parse
      [ 43%] Built target yaml-cpp-parse
      Consolidate compiler generated dependencies of target yaml-cpp-read
      [ 44%] Built target yaml-cpp-read
      Consolidate compiler generated dependencies of target common
      [ 47%] Built target common
      Consolidate compiler generated dependencies of target channel
      [ 48%] Built target channel
      Consolidate compiler generated dependencies of target channel_ros2
      [ 50%] Built target channel_ros2
      Consolidate compiler generated dependencies of target plugin
      [ 52%] Built target plugin
      Consolidate compiler generated dependencies of target mainwindow
      [ 53%] Building CXX object mainwindow/CMakeFiles/mainwindow.dir/src/display/display_occ_map.cpp.o
      In file included from /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/mainwindow/src/display/display_occ_map.cpp:1:
      /home/ubuntu/RobotProject/deneme_ws/src/Ros_Qt5_Gui_App/mainwindow/include/display/display_occ_map.h:16:10: fatal error: Qt3DExtras/QPhongMaterial: No such file or directory
         16 | #include <Qt3DExtras/QPhongMaterial>
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      compilation terminated.
      make[2]: *** [mainwindow/CMakeFiles/mainwindow.dir/build.make:383: mainwindow/CMakeFiles/mainwindow.dir/src/display/display_occ_map.cpp.o] Error 1
      make[1]: *** [CMakeFiles/Makefile2:1383: mainwindow/CMakeFiles/mainwindow.dir/all] Error 2
      make: *** [Makefile:146: all] Error 2
      

      I want to note that I have installed and can verify necesarry libraries with:

      dpkg -l | grep libqt
      ii  libqt53danimation5:arm64                           5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D animation module
      ii  libqt53dcore5:arm64                                5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D module
      ii  libqt53dextras5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D extras
      ii  libqt53dinput5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Input module
      ii  libqt53dlogic5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D logic module
      ii  libqt53dquick5:arm64                               5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick module
      ii  libqt53dquickanimation5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick animation module
      ii  libqt53dquickextras5:arm64                         5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick extras
      ii  libqt53dquickinput5:arm64                          5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick input
      ii  libqt53dquickrender5:arm64                         5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick Renderer module
      ii  libqt53dquickscene2d5:arm64                        5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Quick scene module
      ii  libqt53drender5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt 3D Renderer module
      ii  libqt5charts5:arm64                                5.12.8-0ubuntu1                       arm64        Qt charts shared library
      ii  libqt5concurrent5:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 concurrent module
      ii  libqt5core5a:arm64                                 5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 core module
      ii  libqt5dbus5:arm64                                  5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 D-Bus module
      ii  libqt5designer5:arm64                              5.12.8-0ubuntu1                       arm64        Qt 5 designer module
      ii  libqt5designercomponents5:arm64                    5.12.8-0ubuntu1                       arm64        Qt 5 Designer components module
      ii  libqt5gui5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 GUI module
      ii  libqt5help5:arm64                                  5.12.8-0ubuntu1                       arm64        Qt 5 help module
      ii  libqt5location5:arm64                              5.12.8+dfsg-0ubuntu1                  arm64        Qt Location module
      ii  libqt5location5-plugins:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt Location module - geolocation plugins
      ii  libqt5network5:arm64                               5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 network module
      ii  libqt5opengl5:arm64                                5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 OpenGL module
      ii  libqt5opengl5-dev:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 OpenGL library development files
      ii  libqt5positioning5:arm64                           5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module
      ii  libqt5positioning5-plugins:arm64                   5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module - position plugins
      ii  libqt5positioningquick5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt Positioning module - Qt Quick module
      ii  libqt5printsupport5:arm64                          5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 print support module
      ii  libqt5qml5:arm64                                   5.12.8-0ubuntu1                       arm64        Qt 5 QML module
      ii  libqt5quick5:arm64                                 5.12.8-0ubuntu1                       arm64        Qt 5 Quick library
      ii  libqt5quickcontrols2-5:arm64                       5.12.8+dfsg-0ubuntu1                  arm64        Qt 5 Quick Controls 2 library
      ii  libqt5quickparticles5:arm64                        5.12.8-0ubuntu1                       arm64        Qt 5 Quick particles module
      ii  libqt5quickshapes5:arm64                           5.12.8-0ubuntu1                       arm64        Qt 5 Quick Shapes module
      ii  libqt5quicktemplates2-5:arm64                      5.12.8+dfsg-0ubuntu1                  arm64        Qt 5 Quick Templates 2 library
      ii  libqt5quicktest5:arm64                             5.12.8-0ubuntu1                       arm64        Qt 5 Quick Test library
      ii  libqt5quickwidgets5:arm64                          5.12.8-0ubuntu1                       arm64        Qt 5 Quick Widgets library
      ii  libqt5sensors5:arm64                               5.12.8-0ubuntu1                       arm64        Qt Sensors module
      ii  libqt5serialport5:arm64                            5.12.8-0ubuntu1                       arm64        Qt 5 serial port support
      ii  libqt5sql5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 SQL module
      ii  libqt5sql5-sqlite:arm64                            5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 SQLite 3 database driver
      ii  libqt5svg5:arm64                                   5.12.8-0ubuntu1                       arm64        Qt 5 SVG module
      ii  libqt5svg5-dev:arm64                               5.12.8-0ubuntu1                       arm64        Qt 5 SVG module development files
      ii  libqt5test5:arm64                                  5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 test module
      ii  libqt5webchannel5:arm64                            5.12.8-0ubuntu1                       arm64        Web communication library for Qt
      ii  libqt5webkit5:arm64                                5.212.0~alpha4-1ubuntu2.1             arm64        Web content engine library for Qt
      ii  libqt5webkit5-dev:arm64                            5.212.0~alpha4-1ubuntu2.1             arm64        Web content engine library for Qt - development files
      ii  libqt5widgets5:arm64                               5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 widgets module
      ii  libqt5x11extras5:arm64                             5.12.8-0ubuntu1                       arm64        Qt 5 X11 extras
      ii  libqt5xml5:arm64                                   5.12.8+dfsg-0ubuntu2.1                arm64        Qt 5 XML module
      

      for displa file's CMakeLists.txt I have made changes because firstly, 3D libraries cannot be found from cmake even if it exists.
      Here is the cmake file that I changed:

      include(TargetNameHelper)
      GetTargetName()
      
      find_package(OpenCV REQUIRED)
      include_directories(${OpenCV_INCLUDE_DIRS})
      find_package(Qt5 COMPONENTS Widgets Concurrent Svg REQUIRED)
      
      link_directories("/usr/lib/aarch64-linux-gnu")
      
      file(GLOB_RECURSE SOURCE_FILE  CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR} src/*.cpp src/*.cc)
      list(FILTER SOURCE_FILE EXCLUDE REGEX "(.*_test\\.cpp$)|(.*_test\\.cc$)")
      file(GLOB_RECURSE UI_FILE CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}  ui/*.ui)
      file(GLOB_RECURSE QRC_FILE  CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}  resource/*.qrc)
      file(GLOB_RECURSE INCLUDE_FILE CONFIGURE_DEPENDS  ${CMAKE_SOURCE_DIR}  include/*.h *.hpp)
      
      ####qt moc
      qt5_wrap_ui(QT_UI_HPP ${UI_FILE})
      qt5_wrap_cpp(QT_MOC_HPP ${INCLUDE_FILE})
      qt5_add_resources(QT_RESOUCE_HPP ${QRC_FILE})
      set(SO_FILES
          /usr/lib/aarch64-linux-gnu/libQt53DCore.so
          /usr/lib/aarch64-linux-gnu/libQt53DExtras.so.5
          /usr/lib/aarch64-linux-gnu/libQt53DRender.so
          # Add other .so files here
      )
      
      #向可执行程序添加源文件
      add_library(${TARGET_NAME} STATIC
          ${SOURCE_FILE}
          ${INCLUDE_FILE}
          ${UI_FILE}
          ${QT_MOC_HPP}
          ${QRC_FILE}
          ${QT_RESOUCE_HPP}
        )
        #项目包含的头文件路径
      
      target_include_directories(
        ${TARGET_NAME}
        PUBLIC
      	include/
        include/display/
       ${CMAKE_CURRENT_BINARY_DIR}
      )
      target_link_libraries(${TARGET_NAME} Qt5::Widgets Qt5::Core Qt5::Concurrent Qt5::Svg ${SO_FILES} qt${QT_VERSION_MAJOR}advanceddocking json_struct common basic channel plugin ${OpenCV_LIBS})
      

      lastly, in project there exists .pro file and I add 3D libs to Qt += part as follows:

      ADS_OUT_ROOT = $${OUT_PWD}/..
      CONFIG += c++14
      CONFIG += debug_and_release
      TARGET = $$qtLibraryTarget(qtadvanceddocking)
      DEFINES += QT_DEPRECATED_WARNINGS
      TEMPLATE = lib
      DESTDIR = $${ADS_OUT_ROOT}/lib
      QT += core gui widgets 3dcore 3drender 3dextras
      
      !adsBuildStatic {
      	CONFIG += shared
          DEFINES += ADS_SHARED_EXPORT
      }
      adsBuildStatic {
      	CONFIG += staticlib
          DEFINES += ADS_STATIC
      }
      
      windows {
      	# MinGW
      	*-g++* {
      		QMAKE_CXXFLAGS += -Wall -Wextra -pedantic
      	}
      	# MSVC
      	*-msvc* {
                      QMAKE_CXXFLAGS += /utf-8
              }
      }
      
      RESOURCES += ads.qrc
      
      HEADERS += \
          ads_globals.h \
          DockAreaWidget.h \
          DockAreaTabBar.h \
          DockContainerWidget.h \
          DockManager.h \
          DockWidget.h \
          DockWidgetTab.h \ 
          DockingStateReader.h \
          FloatingDockContainer.h \
          FloatingDragPreview.h \
          DockOverlay.h \
          DockSplitter.h \
          DockAreaTitleBar_p.h \
          DockAreaTitleBar.h \
          ElidingLabel.h \
          IconProvider.h \
          DockComponentsFactory.h  \
          DockFocusController.h \
          AutoHideDockContainer.h \
          AutoHideSideBar.h \
          AutoHideTab.h \
          PushButton.h \
          ResizeHandle.h
      
      
      SOURCES += \
          ads_globals.cpp \
          DockAreaWidget.cpp \
          DockAreaTabBar.cpp \
          DockContainerWidget.cpp \
          DockManager.cpp \
          DockWidget.cpp \
          DockingStateReader.cpp \
          DockWidgetTab.cpp \
          FloatingDockContainer.cpp \
          FloatingDragPreview.cpp \
          DockOverlay.cpp \
          DockSplitter.cpp \
          DockAreaTitleBar.cpp \
          ElidingLabel.cpp \
          IconProvider.cpp \
          DockComponentsFactory.cpp \
          DockFocusController.cpp \
          AutoHideDockContainer.cpp \
          AutoHideSideBar.cpp \
          AutoHideTab.cpp \
          PushButton.cpp \
          ResizeHandle.cpp
      
      
      unix:!macx {
      HEADERS += linux/FloatingWidgetTitleBar.h
      SOURCES += linux/FloatingWidgetTitleBar.cpp
      LIBS += -lxcb
      QT += gui-private
      }
      
      isEmpty(PREFIX){
      	PREFIX=../installed
      	warning("Install Prefix not set")
      }
      headers.path=$$PREFIX/include
      headers.files=$$HEADERS
      target.path=$$PREFIX/lib
      INSTALLS += headers target
      
      DISTFILES +=
      

      Lastly, I have check the issues like 1,2 and follow given instructions to solve my issue, but they didnt help.
      What could be the problem causes this issue?
      Thanks in advance.

      Pl45m4P Offline
      Pl45m4P Offline
      Pl45m4
      wrote on last edited by Pl45m4
      #2

      @tugbakara

      Hi and welcome,

      first, QPhongMaterial is deprecated and shouldn't be used in new projects, as the documentation states here

      As far as I can see the project you are referring to is using CMake not QMake?!
      How about added/linking the Qt3D module here:
      Line 35, in CMakeLists.txt

      target_link_libraries(${TARGET_NAME} Qt5::Widgets Qt5::Core Qt5::Concurrent Qt5::Svg qt${QT_VERSION_MAJOR}advanceddocking json_struct common basic channel plugin ${OpenCV_LIBS})
      

      Try to add Qt5::3dextras Qt5::3DCore and eveything else you need.


      If debugging is the process of removing software bugs, then programming must be the process of putting them in.

      ~E. W. Dijkstra

      1 Reply Last reply
      1

      • Login

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