Skip to content

Commit 1802451

Browse files
committed
Add support for Qt6
1 parent 86895cb commit 1802451

File tree

15 files changed

+208
-46
lines changed

15 files changed

+208
-46
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ option(RL_BUILD_TESTS "Build tests" ON)
5858
option(RL_BUILD_UTIL "Build utility component" ON)
5959
option(RL_BUILD_XML "Build XML abstraction layer component" ON)
6060
option(RL_USE_QT5 "Prefer Qt5 over Qt4 if available" ON)
61+
option(RL_USE_QT6 "Prefer Qt6 over Qt6 if available" ON)
6162

6263
cmake_dependent_option(RL_BUILD_HAL "Build hardware abstraction layer component" ON "RL_BUILD_MATH;RL_BUILD_UTIL" OFF)
6364
cmake_dependent_option(RL_BUILD_KIN "Build Denavit-Hartenberg kinematics component" ON "RL_BUILD_MATH;RL_BUILD_XML" OFF)

demos/rlCoachKin/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
find_package(OpenGL REQUIRED)
22
find_package(SoQt)
33

4-
if(RL_USE_QT5 AND SoQt_HAVE_QT5)
4+
if(RL_USE_QT6 AND SoQt_HAVE_QT6)
5+
find_package(Qt6 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
6+
set(QT_FOUND ${Qt6_FOUND})
7+
endif()
8+
9+
if(NOT Qt6_FOUND AND RL_USE_QT5 AND SoQt_HAVE_QT5)
510
find_package(Qt5 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
11+
set(QT_FOUND ${Qt5_FOUND})
612
endif()
713

8-
if(Qt5_FOUND)
9-
set(QT_FOUND Qt5_FOUND)
10-
else()
14+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
1115
set(QT_USE_IMPORTED_TARGETS ON)
1216
find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork QtOpenGL)
1317
endif()
@@ -64,7 +68,9 @@ if(QT_FOUND AND SoQt_FOUND)
6468
target_link_libraries(rlCoachKin ${OPENGL_LIBRARIES})
6569
endif()
6670

67-
if(Qt5_FOUND)
71+
if(Qt6_FOUND)
72+
target_link_libraries(rlCoachKin Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::Network Qt6::Widgets)
73+
elseif(Qt5_FOUND)
6874
target_link_libraries(rlCoachKin Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network Qt5::Widgets)
6975
elseif(Qt4_FOUND)
7076
target_link_libraries(rlCoachKin Qt4::QtCore Qt4::QtGui Qt4::QtNetwork Qt4::QtOpenGL)

demos/rlCoachKin/MainWindow.cpp

+17-1
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,17 @@
2626

2727
#include <QApplication>
2828
#include <QDateTime>
29-
#include <QGLWidget>
3029
#include <QHeaderView>
3130
#include <Inventor/actions/SoWriteAction.h>
3231
#include <Inventor/Qt/SoQt.h>
3332
#include <rl/sg/XmlFactory.h>
3433

34+
#if QT_VERSION >= 0x060000
35+
#include <QOpenGLWindow>
36+
#else
37+
#include <QGLWidget>
38+
#endif
39+
3540
#include "ConfigurationDelegate.h"
3641
#include "ConfigurationModel.h"
3742
#include "MainWindow.h"
@@ -65,10 +70,16 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags f) :
6570
SoDB::init();
6671
SoGradientBackground::initClass();
6772

73+
#if QT_VERSION >= 0x060000
74+
QSurfaceFormat format;
75+
format.setSamples(8);
76+
QSurfaceFormat::setDefaultFormat(format);
77+
#else
6878
QGLFormat format;
6979
format.setAlpha(true);
7080
format.setSampleBuffers(true);
7181
QGLFormat::setDefaultFormat(format);
82+
#endif
7283

7384
this->scene = std::make_shared<rl::sg::so::Scene>();
7485
rl::sg::XmlFactory geometryFactory;
@@ -229,7 +240,12 @@ MainWindow::saveImage(bool withAlpha)
229240
}
230241

231242
glReadBuffer(GL_FRONT);
243+
244+
#if QT_VERSION >= 0x060000
245+
QImage image = this->viewer->getGLWidget()->property("SoQtGLArea").value<QOpenGLWindow*>()->grabFramebuffer();
246+
#else
232247
QImage image = static_cast<QGLWidget*>(this->viewer->getGLWidget())->grabFrameBuffer(withAlpha);
248+
#endif
233249

234250
if (withAlpha)
235251
{

demos/rlCoachMdl/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
find_package(OpenGL REQUIRED)
22
find_package(SoQt)
33

4-
if(RL_USE_QT5 AND SoQt_HAVE_QT5)
4+
if(RL_USE_QT6 AND SoQt_HAVE_QT6)
5+
find_package(Qt6 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
6+
set(QT_FOUND ${Qt6_FOUND})
7+
endif()
8+
9+
if(NOT Qt6_FOUND AND RL_USE_QT5 AND SoQt_HAVE_QT5)
510
find_package(Qt5 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
11+
set(QT_FOUND ${Qt5_FOUND})
612
endif()
713

8-
if(Qt5_FOUND)
9-
set(QT_FOUND Qt5_FOUND)
10-
else()
14+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
1115
set(QT_USE_IMPORTED_TARGETS ON)
1216
find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork QtOpenGL)
1317
endif()
@@ -64,7 +68,9 @@ if(QT_FOUND AND SoQt_FOUND)
6468
target_link_libraries(rlCoachMdl ${OPENGL_LIBRARIES})
6569
endif()
6670

67-
if(Qt5_FOUND)
71+
if(Qt6_FOUND)
72+
target_link_libraries(rlCoachMdl Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::Network Qt6::Widgets)
73+
elseif(Qt5_FOUND)
6874
target_link_libraries(rlCoachMdl Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network Qt5::Widgets)
6975
elseif(Qt4_FOUND)
7076
target_link_libraries(rlCoachMdl Qt4::QtCore Qt4::QtGui Qt4::QtNetwork Qt4::QtOpenGL)

demos/rlCoachMdl/MainWindow.cpp

+26-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626

2727
#include <QApplication>
2828
#include <QDateTime>
29-
#include <QGLWidget>
3029
#include <QHeaderView>
3130
#include <QStatusBar>
3231
#include <Inventor/actions/SoWriteAction.h>
@@ -36,6 +35,12 @@
3635
#include <rl/sg/UrdfFactory.h>
3736
#include <rl/sg/XmlFactory.h>
3837

38+
#if QT_VERSION >= 0x060000
39+
#include <QOpenGLWindow>
40+
#else
41+
#include <QGLWidget>
42+
#endif
43+
3944
#include "ConfigurationDelegate.h"
4045
#include "ConfigurationModel.h"
4146
#include "MainWindow.h"
@@ -77,10 +82,16 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags f) :
7782
SoDB::init();
7883
SoGradientBackground::initClass();
7984

85+
#if QT_VERSION >= 0x060000
86+
QSurfaceFormat format;
87+
format.setSamples(8);
88+
QSurfaceFormat::setDefaultFormat(format);
89+
#else
8090
QGLFormat format;
8191
format.setAlpha(true);
8292
format.setSampleBuffers(true);
8393
QGLFormat::setDefaultFormat(format);
94+
#endif
8495

8596
std::shared_ptr<rl::sg::Factory> geometryFactory;
8697
std::string geometryFilename = QApplication::arguments()[1].toStdString();
@@ -317,7 +328,21 @@ MainWindow::saveImage(bool withAlpha)
317328
}
318329

319330
glReadBuffer(GL_FRONT);
331+
332+
#if QT_VERSION >= 0x060000
333+
QOpenGLWindow* window = this->viewer->getGLWidget()->property("SoQtGLArea").value<QOpenGLWindow*>();
334+
QSurfaceFormat surfaceFormat = window->format();
335+
336+
if (withAlpha != surfaceFormat.hasAlpha())
337+
{
338+
surfaceFormat.setAlphaBufferSize(withAlpha ? 8 : 0);
339+
window->setFormat(surfaceFormat);
340+
}
341+
342+
QImage image = window->grabFramebuffer();
343+
#else
320344
QImage image = static_cast<QGLWidget*>(this->viewer->getGLWidget())->grabFrameBuffer(withAlpha);
345+
#endif
321346

322347
if (withAlpha)
323348
{

demos/rlCollisionDemo/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
find_package(OpenGL REQUIRED)
22
find_package(SoQt)
33

4-
if(RL_USE_QT5 AND SoQt_HAVE_QT5)
4+
if(RL_USE_QT6 AND SoQt_HAVE_QT6)
5+
find_package(Qt6 COMPONENTS Core Gui OpenGL Widgets QUIET)
6+
set(QT_FOUND ${Qt6_FOUND})
7+
endif()
8+
9+
if(NOT Qt6_FOUND AND RL_USE_QT5 AND SoQt_HAVE_QT5)
510
find_package(Qt5 COMPONENTS Core Gui OpenGL Widgets QUIET)
11+
set(QT_FOUND ${Qt5_FOUND})
612
endif()
713

8-
if(Qt5_FOUND)
9-
set(QT_FOUND Qt5_FOUND)
10-
else()
14+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
1115
set(QT_USE_IMPORTED_TARGETS ON)
1216
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL)
1317
endif()
@@ -54,7 +58,9 @@ if(QT_FOUND AND SoQt_FOUND AND (RL_BUILD_SG_BULLET OR RL_BUILD_SG_FCL OR RL_BUIL
5458
target_link_libraries(rlCollisionDemo ${OPENGL_LIBRARIES})
5559
endif()
5660

57-
if(Qt5_FOUND)
61+
if(Qt6_FOUND)
62+
target_link_libraries(rlCollisionDemo Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::Widgets)
63+
elseif(Qt5_FOUND)
5864
target_link_libraries(rlCollisionDemo Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Widgets)
5965
elseif(Qt4_FOUND)
6066
target_link_libraries(rlCollisionDemo Qt4::QtCore Qt4::QtGui Qt4::QtOpenGL)

demos/rlPlanDemo/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@ find_package(Boost REQUIRED)
22
find_package(OpenGL REQUIRED)
33
find_package(SoQt)
44

5-
if(RL_USE_QT5 AND SoQt_HAVE_QT5)
5+
if(RL_USE_QT6 AND SoQt_HAVE_QT6)
6+
find_package(Qt6 COMPONENTS Core Gui OpenGL PrintSupport Widgets QUIET)
7+
set(QT_FOUND ${Qt6_FOUND})
8+
endif()
9+
10+
if(NOT Qt6_FOUND AND RL_USE_QT5 AND SoQt_HAVE_QT5)
611
find_package(Qt5 COMPONENTS Core Gui OpenGL PrintSupport Widgets QUIET)
12+
set(QT_FOUND ${Qt5_FOUND})
713
endif()
814

9-
if(Qt5_FOUND)
10-
set(QT_FOUND Qt5_FOUND)
11-
else()
15+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
1216
set(QT_USE_IMPORTED_TARGETS ON)
1317
find_package(Qt4 COMPONENTS QtCore QtGui QtOpenGL)
1418
endif()
@@ -72,7 +76,9 @@ if(QT_FOUND AND SoQt_FOUND AND (RL_BUILD_SG_BULLET OR RL_BUILD_SG_FCL OR RL_BUIL
7276
target_link_libraries(rlPlanDemo ${OPENGL_LIBRARIES})
7377
endif()
7478

75-
if(Qt5_FOUND)
79+
if(Qt6_FOUND)
80+
target_link_libraries(rlPlanDemo Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::PrintSupport Qt6::Widgets)
81+
elseif(Qt5_FOUND)
7682
target_link_libraries(rlPlanDemo Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::PrintSupport Qt5::Widgets)
7783
elseif(Qt4_FOUND)
7884
target_link_libraries(rlPlanDemo Qt4::QtCore Qt4::QtGui Qt4::QtOpenGL)

demos/rlPlanDemo/MainWindow.cpp

+12-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
#include <QDateTime>
3030
#include <QDockWidget>
3131
#include <QFileDialog>
32-
#include <QGLWidget>
3332
#include <QGraphicsView>
3433
#include <QHeaderView>
3534
#include <QLayout>
@@ -85,6 +84,12 @@
8584
#include <QCommandLineParser>
8685
#endif
8786

87+
#if QT_VERSION >= 0x060000
88+
#include <QSurfaceFormat>
89+
#else
90+
#include <QGLFormat>
91+
#endif
92+
8893
#ifdef RL_SG_BULLET
8994
#include <rl/sg/bullet/Scene.h>
9095
#endif // RL_SG_BULLET
@@ -196,10 +201,16 @@ MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags f) :
196201
SoDB::init();
197202
SoGradientBackground::initClass();
198203

204+
#if QT_VERSION >= 0x060000
205+
QSurfaceFormat format;
206+
format.setSamples(8);
207+
QSurfaceFormat::setDefaultFormat(format);
208+
#else
199209
QGLFormat format;
200210
format.setAlpha(true);
201211
format.setSampleBuffers(true);
202212
QGLFormat::setDefaultFormat(format);
213+
#endif
203214

204215
this->viewer = new Viewer(this);
205216
this->setCentralWidget(this->viewer);

demos/rlPlanDemo/Viewer.cpp

+20-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
//
2626

2727
#include <QDateTime>
28-
#include <QGLWidget>
2928
#include <QMessageBox>
3029
#include <QStatusBar>
3130
#include <Inventor/actions/SoWriteAction.h>
@@ -36,6 +35,12 @@
3635
#include <rl/sg/so/Model.h>
3736
#include <rl/sg/so/Shape.h>
3837

38+
#if QT_VERSION >= 0x060000
39+
#include <QOpenGLWindow>
40+
#else
41+
#include <QGLWidget>
42+
#endif
43+
3944
#include "SoGradientBackground.h"
4045
#include "MainWindow.h"
4146
#include "Viewer.h"
@@ -981,7 +986,21 @@ Viewer::saveImage(bool withAlpha)
981986
}
982987

983988
glReadBuffer(GL_FRONT);
989+
990+
#if QT_VERSION >= 0x060000
991+
QOpenGLWindow* window = this->viewer->getGLWidget()->property("SoQtGLArea").value<QOpenGLWindow*>();
992+
QSurfaceFormat surfaceFormat = window->format();
993+
994+
if (withAlpha != surfaceFormat.hasAlpha())
995+
{
996+
surfaceFormat.setAlphaBufferSize(withAlpha ? 8 : 0);
997+
window->setFormat(surfaceFormat);
998+
}
999+
1000+
QImage image = window->grabFramebuffer();
1001+
#else
9841002
QImage image = static_cast<QGLWidget*>(this->viewer->getGLWidget())->grabFrameBuffer(withAlpha);
1003+
#endif
9851004

9861005
if (withAlpha)
9871006
{

demos/rlRotationConverterDemo/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
if(RL_USE_QT5)
1+
if(RL_USE_QT6)
2+
find_package(Qt6 COMPONENTS Core Gui Widgets QUIET)
3+
set(QT_FOUND ${Qt6_FOUND})
4+
endif()
5+
6+
if(NOT Qt6_FOUND AND RL_USE_QT5)
27
find_package(Qt5 COMPONENTS Core Gui Widgets QUIET)
8+
set(QT_FOUND ${Qt5_FOUND})
39
endif()
410

5-
if(Qt5_FOUND)
6-
set(QT_FOUND Qt5_FOUND)
7-
else()
11+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
812
set(QT_USE_IMPORTED_TARGETS ON)
913
find_package(Qt4 COMPONENTS QtCore QtGui)
1014
endif()
@@ -50,7 +54,9 @@ if(QT_FOUND)
5054
math
5155
)
5256

53-
if(Qt5_FOUND)
57+
if(Qt6_FOUND)
58+
target_link_libraries(rlRotationConverterDemo Qt6::Core Qt6::Gui Qt6::Widgets)
59+
elseif(Qt5_FOUND)
5460
target_link_libraries(rlRotationConverterDemo Qt5::Core Qt5::Gui Qt5::Widgets)
5561
elseif(Qt4_FOUND)
5662
target_link_libraries(rlRotationConverterDemo Qt4::QtCore Qt4::QtGui)

demos/rlSimulator/CMakeLists.txt

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
find_package(OpenGL REQUIRED)
22
find_package(SoQt)
33

4-
if(RL_USE_QT5 AND SoQt_HAVE_QT5)
4+
if(RL_USE_QT6 AND SoQt_HAVE_QT6)
5+
find_package(Qt6 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
6+
set(QT_FOUND ${Qt6_FOUND})
7+
endif()
8+
9+
if(NOT Qt6_FOUND AND RL_USE_QT5 AND SoQt_HAVE_QT5)
510
find_package(Qt5 COMPONENTS Core Gui Network OpenGL Widgets QUIET)
11+
set(QT_FOUND ${Qt5_FOUND})
612
endif()
713

8-
if(Qt5_FOUND)
9-
set(QT_FOUND Qt5_FOUND)
10-
else()
14+
if(NOT Qt6_FOUND AND NOT Qt5_FOUND)
1115
set(QT_USE_IMPORTED_TARGETS ON)
1216
find_package(Qt4 COMPONENTS QtCore QtGui QtNetwork QtOpenGL)
1317
endif()
@@ -64,7 +68,9 @@ if(QT_FOUND AND SoQt_FOUND)
6468
target_link_libraries(rlSimulator ${OPENGL_LIBRARIES})
6569
endif()
6670

67-
if(Qt5_FOUND)
71+
if(Qt6_FOUND)
72+
target_link_libraries(rlSimulator Qt6::Core Qt6::Gui Qt6::OpenGL Qt6::Network Qt6::Widgets)
73+
elseif(Qt5_FOUND)
6874
target_link_libraries(rlSimulator Qt5::Core Qt5::Gui Qt5::OpenGL Qt5::Network Qt5::Widgets)
6975
elseif(Qt4_FOUND)
7076
target_link_libraries(rlSimulator Qt4::QtCore Qt4::QtGui Qt4::QtNetwork Qt4::QtOpenGL)

0 commit comments

Comments
 (0)