Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/qt4 qt5 #80

Open
wants to merge 66 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
e1fd10a
Inital qt5 port
Dec 2, 2021
c56461d
Update manifest deps to qt5
Dec 2, 2021
617683c
Remove remaining dependencies to qt4
chhtz Mar 14, 2022
e96ccb6
Merge pull request #51 from chhtz/feature/qt5
skasperski Mar 16, 2022
81d84de
Need to remove the prefixes, since QtPropertyBrowser already has it a…
chhtz Mar 25, 2022
c095500
Vizkit3DPlugin.hpp depends on Qt5Widgets
chhtz Mar 25, 2022
f2dc8c4
Merge pull request #52 from chhtz/feature/qt5
planthaber Mar 25, 2022
0898561
Merge remote-tracking branch 'autobuild/master' into feature/qt5
pierrewillenbrockdfki Mar 25, 2022
ece8a0b
Further porting for Qt5
pierrewillenbrockdfki Mar 25, 2022
3ac06d2
IID is supposed to point to the interface that has been implemented
pierrewillenbrockdfki May 26, 2020
9f411a4
Prevent calling of osgViz::update() when not visible
pierrewillenbrockdfki Jun 2, 2020
e8b0cfa
Stop using osgviz::WindowManager and osgviz::Window
pierrewillenbrockdfki Jun 2, 2020
1c858fe
require Qt::UiPlugin
pierrewillenbrockdfki Jan 28, 2022
6af0401
openscenegraph-osgQt renamed to openscenegraph-osgQt5
pierrewillenbrockdfki Jun 24, 2021
5d4f1e6
Merge pull request #53 from pierrewillenbrockdfki/feature/qt5
planthaber Mar 25, 2022
5d999be
Revert "openscenegraph-osgQt renamed to openscenegraph-osgQt5"
pierrewillenbrockdfki Mar 25, 2022
3ed8e0b
Revert "openscenegraph-osgQt renamed to openscenegraph-osgQt5"
planthaber Mar 25, 2022
1d7f014
Merge pull request #54 from pierrewillenbrockdfki/feature/qt5
planthaber Mar 25, 2022
23d8d28
find boost only once
planthaber Mar 25, 2022
982159f
Qt::UiPlugin -> Qt5::UiPlugin
planthaber Mar 25, 2022
dfd4fff
Merge branch 'feature/qt5' of https://github.com/rock-core/gui-vizkit…
planthaber Mar 25, 2022
39a1458
use cmake targets as libs
planthaber Mar 25, 2022
8bab937
Make Qts moc look at the headers needing MOCing
pierrewillenbrockdfki Mar 25, 2022
663fc0a
Merge pull request #55 from pierrewillenbrockdfki/feature/qt5
planthaber Mar 25, 2022
d4e36a5
osgQt renamed to openscenegraph-osgQt5
pierrewillenbrockdfki Jun 24, 2021
ecbf40d
Put the headers back in a HEADERS section
pierrewillenbrockdfki Apr 28, 2022
a838667
Merge pull request #57 from pierrewillenbrockdfki/feature/qt5
planthaber May 2, 2022
f507713
fix: catched segmentation failed, if string property can not be set i…
May 5, 2022
2e976da
Merge pull request #58 from annaborn/feature/qt5
planthaber May 5, 2022
798121d
Put the headers back in a HEADERS section
pierrewillenbrockdfki Apr 28, 2022
d0a4b01
Make this package depend on osg_qt5
pierrewillenbrockdfki May 9, 2022
66d5cc2
Merge pull request #59 from pierrewillenbrockdfki/feature/qt5
planthaber May 19, 2022
a9ee2ca
osg_qt5 => gui/osg_qt5
pierrewillenbrockdfki May 19, 2022
d405d4d
Merge pull request #63 from pierrewillenbrockdfki/feature/qt5
planthaber May 19, 2022
29ce929
Improve documentation for VizkitQtPlugin
pierrewillenbrockdfki May 23, 2022
0ecba30
Revert CMakeLists.txt changes from "Further porting for Qt5"
pierrewillenbrockdfki May 23, 2022
010213b
Revert to the boost detection method from master
pierrewillenbrockdfki May 23, 2022
5643c2c
Merge pull request #64 from pierrewillenbrockdfki/feature/qt5
planthaber May 23, 2022
c8c2d25
fis test compilation with qt5
planthaber Nov 18, 2022
5b033f5
init windows/views the osgviz way
planthaber Nov 23, 2022
5038cfc
Add functions to enable or disable properties
haider8645 Feb 21, 2023
4d71cf5
Add dynamic properties to the property browser
haider8645 Feb 24, 2023
3c803f1
Make qtpropertybrowser header relative to QtPropertyBrowser to be abl…
haider8645 Feb 27, 2023
09c4bdf
Merge pull request #68 from haider8645/custom_gui
planthaber Mar 1, 2023
c58b2ac
make the root of the transformer display selectable
planthaber Oct 12, 2022
b98aac0
Merge pull request #69 from haider8645/feature/qt5_tfroot
planthaber Mar 2, 2023
f440009
Revert "Make qtpropertybrowser header relative to QtPropertyBrowser t…
pierrewillenbrockdfki Mar 8, 2023
8363eea
Use DEPS_TARGET with QtPropertyBrowser, fix .pc.in
pierrewillenbrockdfki Mar 9, 2023
a40c4f0
Merge pull request #70 from pierrewillenbrockdfki/fix-qt5-pc
planthaber Mar 10, 2023
9d34dd4
#ifdef style merge of remote-tracking branch 'autobuild/feature/qt5' …
pierrewillenbrockdfki Mar 21, 2023
53b00e8
Split VizkitQtPlugin() macro in two, one for header, one for source bits
pierrewillenbrockdfki Mar 22, 2023
c935e08
Create two versions of each target, one for qt4, one for qt5
pierrewillenbrockdfki Mar 22, 2023
8d87364
Look for plugins named lib*-viz-qt5.() if compiled for qt5
pierrewillenbrockdfki Mar 22, 2023
5595213
Reactivate the initial changeCameraView for qt5
pierrewillenbrockdfki Mar 22, 2023
4408ddc
Add missing viz-qt5 pkgconfig file
pierrewillenbrockdfki Aug 11, 2023
14b05ef
Merge remote-tracking branch 'autobuild/master' into feature/qt4-qt5
pierrewillenbrockdfki Sep 28, 2023
9edd6e0
Merge remote-tracking branch 'rock.core/master' into feature/qt4-qt5
pierrewillenbrockdfki Apr 10, 2024
d514f91
Mark qt5 and qt4 side dependencies optional
pierrewillenbrockdfki Apr 10, 2024
4ec501d
Adjust for finding external QtPropertyBrowser with -qt5 suffix
pierrewillenbrockdfki Aug 8, 2024
5882e09
Setup qt4 version of vizkit3d to link against external qtpropertybrowser
pierrewillenbrockdfki Aug 8, 2024
1373af2
Remove osg_qt5 dependency since it has been merged into osg_qt4
pierrewillenbrockdfki Nov 14, 2024
adb5e20
Mark gui/qtpropertybrowser non-optional
pierrewillenbrockdfki Dec 3, 2024
2f30866
Remove Q_OBJECT from VizkitQtPlugin macro
pierrewillenbrockdfki Jan 22, 2025
cbadf07
Replace qt4 VizkitQtPlugin macro impl with the part macros usable wit…
pierrewillenbrockdfki Jan 22, 2025
cfb69d1
fix name-based plugin loading for qt5
planthaber Jan 28, 2025
4702220
Add a bit of a porting guide for moving plugins to be qt5 compatible
pierrewillenbrockdfki Feb 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# CMakeLists.txt has to be located in the project folder and cmake has to be
# executed from 'project/build' with 'cmake ../'.
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.10)
project(vizkit3d
VERSION 0.2
DESCRIPTION "vizkit3d visualization library")
find_package(Rock)
rock_init()
rock_feature(NOCURDIR)

rock_find_cmake(Boost REQUIRED COMPONENTS thread system)
rock_standard_layout()
38 changes: 37 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,43 @@ vizkit3d is a lightweight infrastructure to allow the creation of 3D views to di
data (and in particular data related to robotic sensing) live. It is used as the
core 3D view implementation in [Rock, the Robot Construction Kit](http://rock-robotics.org).
Nonetheless, vizkit3d uses only widely accepted libraries (Qt and OSG) and depends
on the Rock framework in no way.
on the Rock framework in no way. It only uses Rocks cmake macros.

Vizkit3D functionality can also be accessed from Ruby by using
[the vizkit library](https://github.com/rock-core/gui-vizkit).

Qt5 Porting Guide
=================

Different to Qt4, Qt5 uses the meta object compiler to register plugins.
This requires a few changes to the plugin objects(the classes derived from
`vizkit3d::VizkitPluginFactory`) setup:

* The Qt4 macro must be protected against Qt5:
```
#if QT_VERSION < 0x050000
Q_EXPORT_PLUGIN2(QtPluginVizkitBase, QtPluginVizkitBase)
#endif
```
* The class must use Q_OBJECT and have the line
```
#if QT_VERSION >= 0x050000
Q_PLUGIN_METADATA(IID "rock.vizkit3d.VizkitPluginFactory")
#endif
```
* Since the class now needs to be processed by the moc, it is required that the
class is declared in a header.

If the plugin is instantiated using the `VizkitQtPlugin(name)` macro,
that needs to be replaced by two macro invocations; in a relevant header, use
`VizkitQtPluginHeaderDecls(name)`, and in a compilation object file(.cc/.cpp),
add `VizkitQtPluginImpl(name)` (probably just replacing the
`VizkitQtPlugin(name)` invocation).

It is possible to build both a Qt4 and Qt5 version of the plugins by avoiding
placing the Qt4/Qt5 libraries and includes in the cmake directory scope
variables.
For this, it is easiest to use the Qt4/Qt5 targets provided by
`findPackage(Qt4 COMPONENTE QtCore ...)`/`findPackage(Qt5 COMPONENTS Core ...)`
in `target_link_libraries(viz-qt4 PRIVATE Qt4::QtCore ...)` and
`target_link_libraries(viz-qt5 PRIVATE Qt5::Core ...)`.
18 changes: 12 additions & 6 deletions manifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,20 @@
<keyword>ui</keyword>
<keyword>visualization</keyword>
<keyword>vizkit3d</keyword>
</keywords>
<stage>-1</stage>
<depend package="osg" />
<depend package="qt4" />
<depend package="qt4-opengl" />
<depend package="gui/osg_qt4" />
</keywords>
<stage>-1</stage>
<!-- qt4 version dependencies -->
<depend package="osg" optional="1" />
<depend package="qt4" optional="1" />
<depend package="qt4-opengl" optional="1" />
<!-- qt5 version dependencies -->
<depend package="qt5" optional="1" />
<depend package="qt5-opengl" optional="1" />
<!-- common dependencies -->
<depend package="boost" />
<depend package="base/cmake" />
<depend package="gui/osgviz" />
<depend package="gui/osg_qt4" /> <!-- also contains the qt5 version -->
<depend package="gui/qtpropertybrowser" />
<!-- <depend package="qt-designer" /> !-->
</package>
188 changes: 162 additions & 26 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
rock_find_qt4(QtOpenGL)
include(RockRuby)

QT4_ADD_RESOURCES(PROPERTY_BROWSER_RESOURCES qtpropertybrowser/qtpropertybrowser.qrc)
rock_find_qt4(OPTIONAL QtOpenGL)
rock_find_qt5(OPTIONAL Core OpenGL Widgets UiPlugin)

rock_library(vizkit3d
SOURCES
set(VIZKIT3D_SOURCES
QtThreadedWidget.cpp
NodeLink.cpp
ColorConversionHelper.cpp
Expand All @@ -16,23 +14,20 @@ rock_library(vizkit3d
CoordinateFrame.cpp
DefaultManipulator.cpp
EnableGLDebugOperation.cpp
QPropertyBrowserWidget.cpp
${PROPERTY_BROWSER_RESOURCES}
MOC
Vizkit3DPlugin.cpp
Vizkit3DWidget.cpp
QVizkitMainWindow.cpp
qtpropertybrowser/qteditorfactory.cpp
qtpropertybrowser/qtvariantproperty.cpp
qtpropertybrowser/qtpropertymanager.cpp
qtpropertybrowser/qtbuttonpropertybrowser.cpp
qtpropertybrowser/qtpropertybrowser.cpp
qtpropertybrowser/qtpropertybrowserutils.cpp
qtpropertybrowser/qttreepropertybrowser.cpp
qtpropertybrowser/qtgroupboxpropertybrowser.cpp
QPropertyBrowserWidget.cpp
${MOC_EXTRA}
HEADERS
)

set(VIZKIT3D_MOC
Vizkit3DPlugin.hpp
Vizkit3DWidget.hpp
QVizkitMainWindow.hpp
QPropertyBrowserWidget.hpp
)

set(VIZKIT3D_HEADERS
TransformerGraph.hpp
GridNode.hpp
TextureBox.hpp
Expand All @@ -49,26 +44,167 @@ rock_library(vizkit3d
EnvPluginBase.hpp
DefaultManipulator.hpp
QPropertyBrowserWidget.hpp
qtpropertybrowser/qttreepropertybrowser.h
qtpropertybrowser/qtpropertybrowser.h
qtpropertybrowser/qtvariantproperty.h
qtpropertybrowser/qteditorfactory.h
qtpropertybrowser/qtpropertymanager.h
qtpropertybrowser/qtpropertybrowserutils.h
)

if (ROCK_QT_VERSION_4)
include(RockRuby)
find_package(QtPropertyBrowser-qt4 QUIET)

if(QtPropertyBrowser-qt4_FOUND)
message(STATUS "Using external QtPropertyBrowser-qt4")
set(PROPERTY_BROWSER_TARGET QtPropertyBrowser-qt4)
else()
message(STATUS "Using internal qtpropertybrowser")
QT4_ADD_RESOURCES(PROPERTY_BROWSER_RESOURCES qtpropertybrowser/qtpropertybrowser.qrc)

set(PROPERTY_BROWSER_SOURCES
qtpropertybrowser/qteditorfactory.cpp
qtpropertybrowser/qtvariantproperty.cpp
qtpropertybrowser/qtpropertymanager.cpp
qtpropertybrowser/qtbuttonpropertybrowser.cpp
qtpropertybrowser/qtpropertybrowser.cpp
qtpropertybrowser/qtpropertybrowserutils.cpp
qtpropertybrowser/qttreepropertybrowser.cpp
qtpropertybrowser/qtgroupboxpropertybrowser.cpp
)

set(PROPERTY_BROWSER_MOC
qtpropertybrowser/qteditorfactory.h
qtpropertybrowser/qtvariantproperty.h
qtpropertybrowser/qtpropertymanager.h
qtpropertybrowser/qtbuttonpropertybrowser.h
qtpropertybrowser/qtpropertybrowser.h
qtpropertybrowser/qtpropertybrowserutils.h
qtpropertybrowser/qttreepropertybrowser.h
qtpropertybrowser/qtgroupboxpropertybrowser.h
)

set(PROPERTY_BROWSER_HEADERS
qtpropertybrowser/qttreepropertybrowser.h
qtpropertybrowser/qtpropertybrowser.h
qtpropertybrowser/qtvariantproperty.h
qtpropertybrowser/qteditorfactory.h
qtpropertybrowser/qtpropertymanager.h
qtpropertybrowser/qtpropertybrowserutils.h
)
endif()

rock_library(vizkit3d
SOURCES
${VIZKIT3D_SOURCES}
${PROPERTY_BROWSER_SOURCES}
${PROPERTY_BROWSER_RESOURCES}
MOC
${VIZKIT3D_MOC}
${PROPERTY_BROWSER_MOC}
${MOC_EXTRA}
HEADERS
${VIZKIT3D_HEADERS}
${PROPERTY_BROWSER_HEADERS}
${HEADERS_EXTRA}
LIBS ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY}
LIBS ${Boost_THREAD_LIBRARY} ${Boost_SYSTEM_LIBRARY} Qt4::QtOpenGL
DEPS_CMAKE OpenGL
DEPS_TARGET ${PROPERTY_BROWSER_TARGET}
DEPS_PKGCONFIG openscenegraph openscenegraph-osgQt osgViz
PrimitivesFactory ManipulationClickHandler ${DEPS_EXTRA})

if(NOT QtPropertyBrowser-qt4_FOUND)
target_include_directories(vizkit3d PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/qtpropertybrowser)
endif()

rock_library(vizkitwidgetloader
MOC QVizkitWidgetLoader.cpp
QVizkitWidgetLoader.cpp
MOC QVizkitWidgetLoader.hpp
DEPS vizkit3d
NOINSTALL) # installs in a non-standard location
#rock_library(vizkitmainwindowloader
# MOC QVizkitMainWindowLoader.cpp
# DEPS vizkit3d
# NOINSTALL) # installs in a non-standard location

install(TARGETS vizkitwidgetloader #vizkitmainwindowloader
LIBRARY DESTINATION lib/qt/designer
ARCHIVE DESTINATION lib/qt/designer)

endif()

if (ROCK_QT_VERSION_5)
find_package(QtPropertyBrowser QUIET)
find_package(QtPropertyBrowser-qt5 QUIET)
if(QtPropertyBrowser_FOUND)
message(STATUS "Using abhijitkundu QtPropertyBrowser")
set(QTPROPERTYBROWSER_NAME QtPropertyBrowser)
elseif(QtPropertyBrowser-qt5_FOUND)
message(STATUS "Using rock QtPropertyBrowser-qt5")
set(QTPROPERTYBROWSER_NAME QtPropertyBrowser-qt5)
else()
message(SEND_ERROR "Could not find QtPropertyBrowser or QtPropertyBrowser-qt5")
endif()

pkg_check_modules(OSGQT QUIET osgQt)
pkg_check_modules(OPENSCENEGRAPH_OSGQT5 QUIET openscenegraph-osgQt5)

if(${OPENSCENEGRAPH_OSGQT5_FOUND})
set(OSGQT_PKGCONFIG_NAME "openscenegraph-osgQt5")
elseif(${OSGQT_FOUND})
set(OSGQT_PKGCONFIG_NAME "osgQt")
else()
message(SEND_ERROR "Could not find osgQt or openscenegraph-osgQt5 with pkg-config")
endif()

rock_library(vizkit3d-qt5
SOURCES
${VIZKIT3D_SOURCES}
MOC5
${VIZKIT3D_MOC}
HEADERS
QPropertyBrowserWidget.hpp
${VIZKIT3D_HEADERS}
DEPS_TARGET
# QtPropertyBrowser properly sets up its target, fails to setup the plain
# cmake variables(thus cannot be used with DEPS_CMAKE) and does not have a
# pkg-config file(cannot be used with DEPS_PKGCONFIG).
${QTPROPERTYBROWSER_NAME}
LIBS
# Qt has proper targets so potentially could be used with DEPS_TARGET, but
# it also provides proper pkg-config files, that are prefered there. Here,
# we have the qt dependencies hardcoded into the .pc.in and use the cmake
# targets for the cmake side.
Qt5::Core
Qt5::Widgets
Qt5::OpenGL
Qt5::UiPlugin
${Boost_THREAD_LIBRARY}
${Boost_SYSTEM_LIBRARY}
DEPS_PKGCONFIG
osgViz
${OSGQT_PKGCONFIG_NAME}
ManipulationClickHandler
)

rock_library(vizkitwidgetloader-qt5
SOURCES
QVizkitWidgetLoader.cpp
MOC5
QVizkitWidgetLoader.hpp
DEPS
vizkit3d-qt5
NOINSTALL # installs in a non-standard location
)

rock_library(vizkitmainwindowloader-qt5
SOURCES
QVizkitMainWindowLoader.cpp
DEPS
vizkit3d-qt5
NOINSTALL # installs in a non-standard location
)

#normally, these would go into lib/qt5/plugins/designer, but
#in rock, we put them in lib/qt/designer as well, since we already
#have that in QT_PLUGIN_PATH
install(TARGETS vizkitwidgetloader-qt5 vizkitmainwindowloader-qt5
LIBRARY DESTINATION lib/qt/designer
ARCHIVE DESTINATION lib/qt/designer)

endif()
21 changes: 21 additions & 0 deletions src/QPropertyBrowserWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,13 @@ void QPropertyBrowserWidget::addGlobalProperties(QObject* obj, const QStringList

for(int i = 1 ; i < metaObj->propertyCount(); i++)
{
#if QT_VERSION < 0x050000
if(property_list.contains(QString::fromAscii(metaObj->property(i).name())))
#else
if(!metaObj->property(i).isDesignable())
continue;
if(property_list.contains(QString::fromLocal8Bit(metaObj->property(i).name())))
#endif
{
QtVariantProperty* property = variantManager->addProperty(metaObj->property(i).type(), metaObj->property(i).name());
if(property == 0)
Expand Down Expand Up @@ -75,16 +81,25 @@ void QPropertyBrowserWidget::addProperties(QObject* obj,QObject* parent)
//retrieve and add dynamic properties
QList<QByteArray> dynamicProperties = obj->dynamicPropertyNames();
for (auto dp : dynamicProperties){
#if QT_VERSION >= 0x050000
QVariant val = obj->property(dp.toStdString().c_str());
QtVariantProperty* property =variantManager->addProperty(val.type(), QString(dp.toStdString().c_str()));
#else
QVariant val = obj->property(dp.data());
QtVariantProperty* property =variantManager->addProperty(val.type(), QString(dp.data()));
#endif
property->setValue(val);
properties.push_back(property);
}

for(int i = 1 ; i < metaObj->propertyCount(); i++)
{
QMetaProperty prop = metaObj->property(i);
#if QT_VERSION < 0x050000
if(!prop.isValid())
#else
if(!prop.isValid() || !prop.isDesignable())
#endif
continue;

QVariant var = obj->property(prop.name());
Expand All @@ -101,6 +116,12 @@ void QPropertyBrowserWidget::addProperties(QObject* obj,QObject* parent)
if(prop.type() == QVariant::StringList)
{
QtVariantProperty* property = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),prop.name());
if(property == 0)
{
std::cerr << "QVariant type " << metaObj->property(i).type() << " with name " << metaObj->property(i).name()
<< " is not supported by the QtPropertyBrowser." << std::endl;
continue;
}
property->setAttribute("enumNames", var);
properties.push_back(property);
continue;
Expand Down
9 changes: 6 additions & 3 deletions src/QPropertyBrowserWidget.hpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
#ifndef QPROPERTYBROWSERWIDGET_HPP
#define QPROPERTYBROWSERWIDGET_HPP

#include "qtpropertybrowser/qttreepropertybrowser.h"
#include "qtpropertybrowser/qtvariantproperty.h"
#include "qtpropertybrowser/qtpropertymanager.h"
//for QT_VERSION
#include <QObject>

#include <qttreepropertybrowser.h>
#include <qtvariantproperty.h>
#include <qtpropertymanager.h>

#include <QWidget>
#include <QHash>
Expand Down
4 changes: 4 additions & 0 deletions src/QVizkitMainWindow.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@


#include <QMainWindow>
#if QT_VERSION < 0x050000
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif

namespace vizkit3d {

Expand Down
2 changes: 2 additions & 0 deletions src/QVizkitMainWindowLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,6 @@ QString QVizkitMainWindowLoader::whatsThis() const
return "";
}

#if QT_VERSION < 0x050000
Q_EXPORT_PLUGIN2(QVizkitMainWindowLoader, QVizkitMainWindowLoader)
#endif
Loading