将 QGuiApplication 更改为 QApplication 导致未解决的错误

Changed QGuiApplication to QApplication resulted in unresolved errors

之所以改,是因为需要用到QtWidgets。我一直在尝试构建该项目,但是我不断收到以下错误:

18:37:58: Starting: "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build C:/Users/user/Desktop/build-project-Desktop_Qt_5_15_2_MinGW_64_bit-Debug --target all
[1/4 11.1/sec] Automatic MOC and UIC for target project
[2/3 1.4/sec] Building CXX object CMakeFiles/project.dir/main.cpp.obj
[3/3 2.0/sec] Linking CXX executable project.exe
FAILED: project.exe 
cmd.exe /C "cd . && C:\Qt\Tools\mingw810_64\bin\g++.exe -g  CMakeFiles/project.dir/project_autogen/mocs_compilation.cpp.obj CMakeFiles/project.dir/main.cpp.obj CMakeFiles/project.dir/project_autogen/EWIEGA46WW/qrc_qml.cpp.obj -o project.exe -Wl,--out-implib,libproject.dll.a -Wl,--major-image-version,0,--minor-image-version,0  C:/Qt/5.15.2/mingw81_64/lib/libQt5Quick.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5QmlModels.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Qml.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Network.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Gui.a  C:/Qt/5.15.2/mingw81_64/lib/libQt5Core.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
CMakeFiles/project.dir/main.cpp.obj: In function `main':
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationC1ERiPPci'
C:/Users/user/Desktop/project/main.cpp:16: undefined reference to `__imp__ZN12QApplication4execEv'
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationD1Ev'
C:/Users/user/Desktop/project/main.cpp:9: undefined reference to `__imp__ZN12QApplicationD1Ev'
collect2.exe: error: ld returned 1 exit status

我目前的main.cpp如下:

#include <QtWidgets/QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_QUICK_CONTROLS_STYLE", "Material");
    qputenv("QT_QUICK_CONTROLS_MATERIAL_THEME","Dark");
    qputenv("QT_QUICK_CONTROLS_MATERIAL_Primary","BlueGrey");
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));



    return app.exec();
}

通过 Cmake 包含 Qt 文件是使用以下方法完成的:

find_package(QT NAMES Qt5 COMPONENTS Core Quick Qt5Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Quick REQUIRED)

target_link_libraries(project
  PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick)

我真的不确定问题出在哪里,所以感谢您的帮助

原来我没有链接 Widgets 库。

target_link_libraries(project
  PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::Widgets)