diff --git a/configure.ac b/configure.ac index dbd7153fb13b..7bcb18219853 100644 --- a/configure.ac +++ b/configure.ac @@ -476,18 +476,33 @@ AM_CONDITIONAL([HAVE_PYTHON], [test "x$with_python" = "xyes"]) dnl Qt AC_ARG_WITH([qt], [AS_HELP_STRING([--without-qt], - [disable support for Qt4 widget])], + [disable support for Qt widget])], [], [with_qt="yes"]) +dnl Qt5 +AC_ARG_WITH([qt5], + [AS_HELP_STRING([--without-qt5], + [disable support for Qt5 widget. if --with-qt, it will seek only for Qt4])], + [], + [with_qt5="yes"]) + AC_ARG_VAR([MOC], [full path to Qt moc program]) AS_IF([test "x$with_qt" != "xno"], - [PKG_CHECK_MODULES([QT], [QtCore >= 4 QtGui >= 4]) - MOC=`$PKG_CONFIG QtGui --variable=moc_location` - AC_MSG_NOTICE([using moc from $MOC]) - QT_VERSION=`$PKG_CONFIG QtGui --modversion` - AC_MSG_NOTICE([using Qt version $QT_VERSION])]) + AS_IF([test "x$with_qt5" != "xno"], + [PKG_CHECK_MODULES([QT], [Qt5Core >= 5 Qt5Gui >= 5 Qt5Widgets >= 5.0 Qt5X11Extras >= 5.0]) + AC_CHECK_PROGS(MOC, [moc-qt5 moc]) + AC_MSG_NOTICE([using moc from $MOC]) + QT_VERSION=`$PKG_CONFIG Qt5Gui --modversion` + CPPFLAGS="$CPPFLAGS $QT_CPPFLAGS -fPIC" + AC_MSG_NOTICE([using Qt version $QT_VERSION])], + + [PKG_CHECK_MODULES([QT], [QtCore >= 4 QtGui >= 4]) + MOC=`$PKG_CONFIG QtGui --variable=moc_location` + AC_MSG_NOTICE([using moc from $MOC]) + QT_VERSION=`$PKG_CONFIG QtGui --modversion` + AC_MSG_NOTICE([using Qt version $QT_VERSION])])) AM_CONDITIONAL([HAVE_QT], [test "x$with_qt" = "xyes"]) @@ -596,9 +611,9 @@ AS_IF([test "x$with_gtk" != "xyes"], [echo " => the GTK+ widget will *NOT* be built"], [AS_IF([test "x$with_python" != "xyes"], [echo " => the PyGTK widget wrapper will *NOT* be built"])]) -echo "Qt4 --with-qt=$with_qt" +echo "Qt${QT_VERSION} --with-qt=$with_qt" AS_IF([test "x$with_qt" != "xyes"], - [echo " => the Qt4 widget will *NOT* be built"]) + [echo " => the Qt widget will *NOT* be built"]) echo "Java --with-java=$with_java" AS_IF([test "x$with_java" != "xyes"], [echo " => the Java interface will *NOT* be built"]) diff --git a/include/zbar/QZBar.h b/include/zbar/QZBar.h index 104449928e2d..1a4716565047 100644 --- a/include/zbar/QZBar.h +++ b/include/zbar/QZBar.h @@ -26,7 +26,12 @@ /// @file /// Barcode Reader Qt4 Widget -#include +#include +#if QT_VERSION >= 0x050000 +# include +#else +# include +#endif namespace zbar { diff --git a/include/zbar/QZBarImage.h b/include/zbar/QZBarImage.h index 1505177e07a9..b862c8085576 100644 --- a/include/zbar/QZBarImage.h +++ b/include/zbar/QZBarImage.h @@ -54,7 +54,11 @@ public: unsigned height = qimg.height(); set_size(width, height); set_format(zbar_fourcc('B','G','R','4')); +#if QT_VERSION >= 0x050000 + unsigned long datalen = qimg.byteCount(); +#else unsigned long datalen = qimg.numBytes(); +#endif set_data(qimg.bits(), datalen); if((width * 4 != bpl) || diff --git a/qt/QZBar.cpp b/qt/QZBar.cpp index e1001b09cff5..a5b956b342ad 100644 --- a/qt/QZBar.cpp +++ b/qt/QZBar.cpp @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include "QZBarThread.h" @@ -49,7 +49,11 @@ QZBar::QZBar (QWidget *parent) thread = new QZBarThread; if(testAttribute(Qt::WA_WState_Created)) { +#if QT_VERSION >= 0x050000 + thread->window.attach(QX11Info::display(), winId()); +#else thread->window.attach(x11Info().display(), winId()); +#endif _attached = 1; } connect(thread, SIGNAL(videoOpened(bool)), @@ -204,7 +208,12 @@ void QZBar::changeEvent(QEvent *event) try { QMutexLocker locker(&thread->mutex); if(event->type() == QEvent::ParentChange) +#if QT_VERSION >= 0x050000 + thread->window.attach(QX11Info::display(), winId()); +#else thread->window.attach(x11Info().display(), winId()); +#endif + } catch(Exception) { /* ignore (FIXME do something w/error) */ } } @@ -215,7 +224,11 @@ void QZBar::attach () return; try { +#if QT_VERSION >= 0x050000 + thread->window.attach(QX11Info::display(), winId()); +#else thread->window.attach(x11Info().display(), winId()); +#endif _attached = 1; _videoEnabled = !_videoDevice.isEmpty();