diff --git a/CMakeLists.txt b/CMakeLists.txt index ddad98a..bcbb559 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ # 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 2.6) +cmake_minimum_required(VERSION 3.5) +project(MyWidget VERSION 0.1 DESCRIPTION "Widget tutorial") find_package(Rock) -rock_init(MyWidget 0.1) +rock_init() +rock_feature(NOCURDIR) rock_standard_layout() diff --git a/manifest.xml b/manifest.xml index 326d502..bbf13df 100644 --- a/manifest.xml +++ b/manifest.xml @@ -8,7 +8,8 @@ http:// - - - + + + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 34bf105..d810d30 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,8 @@ -find_package(Qt4 REQUIRED QtCore QtGui QtOpengl QtDesigner) -include_directories(${QT_INCLUDE_DIR}) -include_directories(${QT_QTCORE_INCLUDE_DIR}) -include_directories(${QT_QTGUI_INCLUDE_DIR}) +rock_find_qt4(OPTIONAL QtCore QtGui QtDesigner) +rock_find_qt5(OPTIONAL Core Gui Widgets UiPlugin) + +include(RockQt) + set(CMAKE_INCLUDE_CURRENT_DIR ON) SET(MOC_HDRS @@ -9,26 +10,54 @@ SET(MOC_HDRS MyWidgetPlugin.h ) -SET(HDRS +SET(INSTALLED_HDRS MyWidget.h ) -FILE(GLOB SRCS - *.cc -) +SET(SRCS + MyWidget.cc + MyWidgetPlugin.cc + ) +# Alternatively, FILE(GLOB) can find any matching file in the directory. +# For this reason, the mywidgetTest executable uses main.cpp instead of main.cc. +#FILE(GLOB SRCS +# *.cc +#) SET(QtApp_RCCS resources.qrc) -QT4_ADD_RESOURCES(QtApp_RCC_SRCS ${QtApp_RCCS}) +if(ROCK_QT4) + QT4_ADD_RESOURCES(QtApp_RCC_SRCS_QT4 ${QtApp_RCCS}) +endif() +if(ROCK_QT5) + QT5_ADD_RESOURCES(QtApp_RCC_SRCS_QT5 ${QtApp_RCCS}) +endif() -rock_vizkit_widget(MyWidget - SOURCES ${SRCS} ${QtApp_RCC_SRCS} - HEADERS ${HDRS} +rock_qt_vizkit_widget( + TARGETPREFIX MyWidget + QT4_SUFFIX "" + SOURCES ${SRCS} + SOURCES_QT4 ${QtApp_RCC_SRCS_QT4} + SOURCES_QT5 ${QtApp_RCC_SRCS_QT5} + HEADERS ${INSTALLED_HDRS} MOC ${MOC_HDRS} - DEPS_PKGCONFIG base-types base-lib QtCore QtGui - DEPS_CMAKE - LIBS ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTOPENGL_LIBRARY} ${QT_QTDESIGNER_LIBRARY} + DEPS_PKGCONFIG base-types base-lib +# Using the cmake targets for target_link_libraries but the +# pkgconfig packages in the .pc file. +# equivalent pkgconfig based configuration: +# DEPS_PKGCONFIG_QT4 QtCore QtGui +# DEPS_PKGCONFIG_QT5 Qt5Core Qt5Gui Qt5Widgets +# above will also add the dependencies to the .pc file, so they +# are not needed in the .pc.in. + LIBS_QT4 Qt4::QtCore Qt4::QtGui + LIBS_QT5 Qt5::Core Qt5::Gui Qt5::Widgets +# for include directories. These do not need to be added to the .pc files, +# the INSTALLED_HDRS do not use them. + LIBS_QT4 Qt4::QtDesigner + LIBS_QT5 Qt5::UiPlugin ) -rock_executable(mywidgetTest - main.cpp - DEPS MyWidget) +rock_qt_executable( + TARGETPREFIX mywidgetTest + QT4_SUFFIX "" + SOURCES main.cpp + DEPS_QT MyWidget) diff --git a/src/MyWidget-qt5.pc.in b/src/MyWidget-qt5.pc.in new file mode 100644 index 0000000..0459dd8 --- /dev/null +++ b/src/MyWidget-qt5.pc.in @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=${prefix}/lib +includedir=${prefix}/include + +Name: @TARGET_NAME@ +Description: @PROJECT_DESCRIPTION@ +Version: @PROJECT_VERSION@ +Requires: @DEPS_PKGCONFIG@ Qt5Core Qt5Gui Qt5Widgets +Libs: -L${libdir} -l@TARGET_NAME@ +Cflags: -I${includedir} + diff --git a/src/MyWidget.cc b/src/MyWidget.cc index 7aa7ed7..55b16cf 100644 --- a/src/MyWidget.cc +++ b/src/MyWidget.cc @@ -1,4 +1,7 @@ #include "MyWidget.h" +#include +#include +#include MyWidget::MyWidget(QWidget *parent) : QWidget(parent) diff --git a/src/MyWidget.h b/src/MyWidget.h index e2a3529..49ed805 100644 --- a/src/MyWidget.h +++ b/src/MyWidget.h @@ -1,19 +1,26 @@ -#ifndef MYWIDGET_H -#define MYWIDGET_H +#pragma once -#include +#include #include +QT_BEGIN_NAMESPACE + +class QGroupBox; +class QFormLayout; +class QLabel; + +QT_END_NAMESPACE + class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = 0); virtual ~MyWidget(); + base::samples::RigidBodyState getPose(); public slots: - base::samples::RigidBodyState getPose(); void setPose(const base::samples::RigidBodyState pose); private: @@ -31,5 +38,3 @@ public slots: QLabel* l3; }; - -#endif /* MYWIDGET_H */ diff --git a/src/MyWidget.pc b/src/MyWidget.pc deleted file mode 100644 index c49cdb4..0000000 --- a/src/MyWidget.pc +++ /dev/null @@ -1,12 +0,0 @@ -prefix=/home/conquest/dev/ROCK-DEV/install -exec_prefix=/home/conquest/dev/ROCK-DEV/install -libdir=${prefix}/lib -includedir=${prefix}/include - -Name: MyWidget -Description: -Version: 0.1 -Requires: base-types base-lib QtCore QtGui -Libs: -L${libdir} -lMyWidget -Cflags: -I${includedir} - diff --git a/src/MyWidget.pc.in b/src/MyWidget.pc.in index 7759a93..4dd93b8 100644 --- a/src/MyWidget.pc.in +++ b/src/MyWidget.pc.in @@ -6,7 +6,7 @@ includedir=${prefix}/include Name: @TARGET_NAME@ Description: @PROJECT_DESCRIPTION@ Version: @PROJECT_VERSION@ -Requires: @DEPS_PKGCONFIG@ +Requires: @DEPS_PKGCONFIG@ QtCore QtGui Libs: -L${libdir} -l@TARGET_NAME@ Cflags: -I${includedir} diff --git a/src/MyWidgetPlugin.cc b/src/MyWidgetPlugin.cc index d7ae3c3..ed9f2f1 100644 --- a/src/MyWidgetPlugin.cc +++ b/src/MyWidgetPlugin.cc @@ -1,7 +1,9 @@ #include "MyWidgetPlugin.h" #include "MyWidget.h" +#if QT_VERSION < 0x050000 Q_EXPORT_PLUGIN2(MyWidget, MyWidgetPlugin) +#endif MyWidgetPlugin::MyWidgetPlugin(QObject *parent) : QObject(parent) diff --git a/src/MyWidgetPlugin.h b/src/MyWidgetPlugin.h index dc45aa9..bf645b0 100644 --- a/src/MyWidgetPlugin.h +++ b/src/MyWidgetPlugin.h @@ -1,12 +1,15 @@ -#ifndef MYWIDGETPLUGIN_H -#define MYWIDGETPLUGIN_H +#pragma once -#include -#include +#include +#include // for Q_PLUGIN_METADATA and Q_EXPORT_PLUGIN2 +#include class MyWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface { Q_OBJECT +#if QT_VERSION >= 0x050000 + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") +#endif Q_INTERFACES(QDesignerCustomWidgetInterface) public: @@ -28,5 +31,3 @@ class MyWidgetPlugin : public QObject, public QDesignerCustomWidgetInterface private: bool initialized; }; - -#endif /* MYWIDGETPLUGIN_H */ diff --git a/src/main.cpp b/src/main.cpp index ec14b17..59a91f5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -#include +#include #include "MyWidget.h"