jahnf / Projecteur

Linux Desktop Application for the Logitech Spotlight device (and similar devices) - Digital Laser Pointer
MIT License
379 stars 33 forks source link

Cannot compile: error: ‘class QWindow’ has no member named ‘setFlag’ #13

Closed bertbrutzel closed 5 years ago

bertbrutzel commented 5 years ago

Many thanks for bringing Spotlight support to Linux. I am certain that this didactic tool will help my students to better understand my lectures!!!

Sadly so far when trying to compile I get the following error output:

/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 2 provided /home/jfk/Software/Projecteur/projecteurapp.cc:84:11: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowTransparentForInput, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:85:11: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::Tool, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc: In lambda function: /home/jfk/Software/Projecteur/projecteurapp.cc:102:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowTransparentForInput, false); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:103:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowStaysOnTopHint, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:110:17: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowStaysOnTopHint, false); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:114:17: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowTransparentForInput, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc: In lambda function: /home/jfk/Software/Projecteur/projecteurapp.cc:125:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowTransparentForInput, false); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:126:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowStaysOnTopHint, false); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:133:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowStaysOnTopHint, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc:136:15: error: ‘class QWindow’ has no member named ‘setFlag’ window->setFlag(Qt::WindowTransparentForInput, true); ^ /home/jfk/Software/Projecteur/projecteurapp.cc: In constructor ‘ProjecteurCommandClientApp::ProjecteurCommandClientApp(const QString&, int&, char**)’: /home/jfk/Software/Projecteur/projecteurapp.cc:238:24: error: ‘QOverload’ was not declared in this scope connect(localSocket, QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error), ^ /home/jfk/Software/Projecteur/projecteurapp.cc:238:64: error: expected primary-expression before ‘>’ token connect(localSocket, QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error), ^ /home/jfk/Software/Projecteur/projecteurapp.cc:238:65: error: ‘::of’ has not been declared connect(localSocket, QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error), ^ CMakeFiles/projecteur.dir/build.make:150: die Regel für Ziel „CMakeFiles/projecteur.dir/projecteurapp.cc.o“ scheiterte make[2]: *** [CMakeFiles/projecteur.dir/projecteurapp.cc.o] Fehler 1 CMakeFiles/Makefile2:72: die Regel für Ziel „CMakeFiles/projecteur.dir/all“ scheiterte make[1]: *** [CMakeFiles/projecteur.dir/all] Fehler 2 Makefile:83: die Regel für Ziel „all“ scheiterte make: *** [all] Fehler 2

Some system info:

$ uname -a Linux jfk 4.13.0-37-generic #42~16.04.1-Ubuntu SMP Wed Mar 7 16:03:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.6 LTS Release: 16.04 Codename: xenial

Compiler and Qt: $ QTDIR=/opt/Qt/5.12.3/gcc_64 /opt/cmake-3.14.1-Linux-x86_64/bin/cmake ..

Window manager is xfce4 with openbox.

jahnf commented 5 years ago

Looks like the build is using the wrong Qt version (since you seem to set the QTDIR to /opt/Qt/5.12.3/gcc_64, please try to delete the build directory and do a retry

/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: (which would be the Qt Version that ships with Ubuntu 16.04...)

You could check if the correct Qt version was configured with the CMake call with cat CMakeCache.txt | grep Qt5Core which should give you sth like this: Qt5Core_DIR:PATH=/opt/Qt/5.12.3/gcc_64/lib/cmake/Qt5Core

What I did not realize: the setFlag method I am using was only introduced in Qt 5.9 - so this would currently the minimal Qt version to build against.. See also: https://doc.qt.io/qt-5/qwindow.html#setFlag

bertbrutzel commented 5 years ago

Great! The old "have you tried turning off and on again" trick did it...thanks. Now I can test it with pdfpc....=)