You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt6 MSVC环境下C++及Python项目QWebEngine无法正常工作问题求助

Qt6 MSVC环境下C++及Python项目QWebEngine无法正常工作问题求助

我现在在Qt6 + MSVC环境下不管是C项目还是Python项目都跑不起来,核心需求是要在项目里用到QWebEngine组件。我已经安装了最新的Qt 6.8.2 MSVC版本,也装了Visual Studio 2022和C 2015-2022的运行库,但还是遇到了一堆问题,折腾好几天了都没解决,想请大家帮忙看看。

C++项目情况

我的C++项目用CMake构建,以下是我的CMakeLists.txt内容:

cmake_minimum_required(VERSION 3.24)
project(mBoard_0_1_0)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe")


set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

#set(CMAKE_PREFIX_PATH "C:/Qt/6.4.2/mingw_64/")
set(CMAKE_PREFIX_PATH "C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6")
# for msvc
message(STATUS "Qt6 found at: ${Qt6_DIR}")
message(STATUS "CMAKE_PREFIX_PATH is: ${CMAKE_PREFIX_PATH}")
find_package(Qt6 COMPONENTS Core Gui Widgets REQUIRED)

add_executable(mBoard_0_1_0 main.cpp MainWindow.h mBoard.h sizes.h mNote.h MainWindow.cpp mBoard.cpp mNote.cpp test-widget.cpp test-widget.cpp)
add_executable(mBoard_0_1_0_mysql mysql.cpp)
target_link_libraries(mBoard_0_1_0 PUBLIC
        Qt6::Core
        Qt6::Gui
        Qt6::Widgets
        )

message(STATUS "Qt6Widgets_DIR: ${Qt6Widgets_DIR}")
if(Qt6Widgets_FOUND)
    message(STATUS "Qt6Widgets found!")
else()
    message(FATAL_ERROR "Qt6Widgets NOT found!")
endif()

include_directories(
        "C:/Qt/6.8.2/msvc2022_64/include"
        "C:/Qt/6.8.2/msvc2022_64/include/QtWidgets"
        "C:/Qt/6.8.2/msvc2022_64/include/QtCore"
        "C:/Qt/6.8.2/msvc2022_64/include/QtGui"
)
set(CMAKE_REQUIRED_INCLUDES ${Qt6Widgets_INCLUDE_DIRS})
set(CMAKE_REQUIRED_LIBRARIES Qt6::Widgets Qt6::Core)

set(CMAKE_REQUIRED_FLAGS "-std=c++20")
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("
    #include <QWidget>
    int main() {
        QWidget w;
        return 0;
    }
" HAVE_QWIDGET)
message(STATUS "HAVE_QWIDGET: ${HAVE_QWIDGET}")


if (HAVE_QWIDGET)
    message(STATUS "QWidget is found!")
else()
    message(FATAL_ERROR "QWidget not found!")
endif()

if (WIN32)
    set(DEBUG_SUFFIX)
    if (MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
        set(DEBUG_SUFFIX "d")
    endif ()
    set(QT_INSTALL_PATH "${CMAKE_PREFIX_PATH}")
    if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
        set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
        if (NOT EXISTS "${QT_INSTALL_PATH}/bin")
            set(QT_INSTALL_PATH "${QT_INSTALL_PATH}/..")
        endif ()
    endif ()
    if (EXISTS "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E make_directory
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/plugins/platforms/qwindows${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>/plugins/platforms/")
    endif ()
    foreach (QT_LIB Core Gui Widgets)
        add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                COMMAND ${CMAKE_COMMAND} -E copy
                "${QT_INSTALL_PATH}/bin/Qt6${QT_LIB}${DEBUG_SUFFIX}.dll"
                "$<TARGET_FILE_DIR:${PROJECT_NAME}>")
    endforeach (QT_LIB)
endif ()

CMake构建错误日志

执行CMake时得到以下输出,卡在了HAVE_QWIDGET的检查上,而且还提示找不到WrapVulkanHeaders,但这个问题在MinGW环境下是没有的,而且项目用MinGW编译完全正常:

"C:\Program Files\JetBrains\CLion 2022.3.1\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=C:/Program Files/JetBrains/CLion 2022.3.1/bin/ninja/win/ninja.exe" -DCMAKE_PREFIX_PATH=C:/Qt/6.8.2/msvc2022_64 -G Ninja -S C:\Users\dot\CLionProjects\mBoard-0.1.0 -B C:\Users\dot\CLionProjects\mBoard-0.1.0\build-msvc-1
-- Qt6 found at: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6
-- CMAKE_PREFIX_PATH is: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6
-- Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR) 
-- Qt6Widgets_DIR: C:/Qt/6.8.2/msvc2022_64/lib/cmake/Qt6Widgets
-- Qt6Widgets found!
-- HAVE_QWIDGET: 

Python项目情况

为了测试MSVC环境的Qt是否正常,我昨天还装了PyQt6,结果同样出问题。我的Python项目用了虚拟环境,PyQt6和PyQt6-WebEngine都是通过pip安装的。

项目代码片段(开头3行)

from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtCore import QUrl

运行错误日志

运行时直接报DLL加载失败:

C:\Users\dot\PycharmProjects\Bujo\venv\Scripts\python.exe C:/Users/dot/PycharmProjects/Bujo/main.py
Traceback (most recent call last):
  File "C:\Users\dot\PycharmProjects\Bujo\main.py", line 2, in <module>
    from PyQt6.QtWebEngineWidgets import QWebEngineView
ImportError: DLL load failed while importing QtWebEngineWidgets:

我这几天试了各种方法都没解决,最优先还是想让C++项目能正常使用QWebEngine,希望大家能给点思路或者解决方案,非常感谢!

备注:内容来源于stack exchange,提问作者dorothy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:18:10