saturneric / GpgFrontend

A free, open-source, robust yet user-friendly, compact and cross-platform tool for OpenPGP encryption. It stands out as an exceptional GUI frontend for the modern GnuPG (gpg).
https://gpgfrontend.bktus.com
GNU General Public License v3.0
450 stars 43 forks source link

error: ‘class QWidget’ has no member named ‘screen’ #117

Closed suphler closed 7 months ago

suphler commented 8 months ago

when Build the code and make the deb package

$ cd GpgFrontend $ mkdir build && cd build $ cmake -G Ninja -DCMAKE_BUILD_TYPE="Release" -DGPGFRONTEND_GENERATE_LINUX_INSTALL_SOFTWARE=ON .. $ ninja

on step "ninja" get an error : error: ‘class QWidget’ has no member named ‘screen’ [4/17] Building CXX object src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/GeneralDialog.cpp.o FAILED: src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/GeneralDialog.cpp.o /usr/bin/c++ -DBOOST_ALL_NO_LIB -DLINUX -DLINUX_INSTALL_BUILD -DMULTI_LANG_SUPPORT -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_TESTCASE_BUILDDIR=\"/home/suphler/dstr/GpgFrontend/build\" -DQT_TESTLIB_LIB -DQT_WIDGETS_LIB -DRELEASE -DSMTP_SUPPORT -Dgpgfrontend_ui_EXPORTS -Isrc/ui -I../src/ui -Isrc/ui/gpgfrontend_ui_autogen/include -I../src -I../third_party -I../third_party/spdlog/include -I../third_party/json/include -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtTest -O3 -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fPIC -std=c++17 -Winvalid-pch -include /home/suphler/dstr/GpgFrontend/build/src/ui/CMakeFiles/gpgfrontend_ui.dir/cmake_pch.hxx -MD -MT src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/GeneralDialog.cpp.o -MF src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/GeneralDialog.cpp.o.d -o src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/GeneralDialog.cpp.o -c ../src/ui/dialog/GeneralDialog.cpp ../src/ui/dialog/GeneralDialog.cpp: In member function ‘void GpgFrontend::UI::GeneralDialog::update_rect_cache()’: ../src/ui/dialog/GeneralDialog.cpp:162:34: error: ‘class QWidget’ has no member named ‘screen’ 162 | auto *screen = this->window()->screen(); | ^~ [6/17] Building CXX object src/ui/CMakeFiles/gpgfrontend_ui.dir/dialog/Wizard.cpp.o ninja: build stopped: subcommand failed.

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal

(additional: - this Ubuntu version is installed under Windows WSL2 )

saturneric commented 8 months ago

You may have encountered this issue because you're compiling the application using Qt5. I apologize for the oversight; this codebase has not been tested for compatibility with Qt5. It is designed to work exclusively with Qt6. I will promptly address this issue with a quick fix on this branch.

saturneric commented 7 months ago

Finally, I realized that the function screen() was introduced in Qt version 5.14. Unfortunately, this app does not support Qt versions below 5.15. I will include this requirement for building the source in the document later.