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

Qt应用中QWebEngineView渲染网页无显示问题求助

Qt5.12.12 + Ubuntu22.04下WebEngine网页无法渲染排查方案

我参考Qt WebEngineWidgets模块文档编写了代码,使用Qt 5.12.12版本,在Ubuntu 22.04.4 LTS系统下通过CMake构建项目。代码编译无报错,但网页无法渲染,以下是我的代码和CMakeLists.txt配置:

代码文件

#include <QApplication>
#include <QThread>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QLabel>
#include <QHBoxLayout>
#include <QWebEngineView>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWebEngineView view;
    view.load(QUrl(QString("https://qt-project.org/")));
    view.resize(1024, 750);
    view.show();  

    return a.exec();
}

CMakeLists.txt配置

cmake_minimum_required(VERSION 3.1.0)
set(CMAKE_BUILD_TYPE Release)
add_definitions(-fPIC)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_VERBOSE_MAKEFILE ON)

list(APPEND CMAKE_PREFIX_PATH "/home/Qt5.12.12/5.12.12/gcc_64")

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

find_package(Qt5 COMPONENTS Gui Core Widgets WebEngineWidgets 
PrintSupport REQUIRED)
include_directories(
    ./inc
)
add_executable(browser
    src/app_main.cpp
)

target_link_libraries(browser
    Qt5::Gui
    Qt5::Widgets 
    Qt5::PrintSupport
    Qt5::WebEngineWidgets
)

排查方案

1. 补全系统依赖

Ubuntu22.04的glibc版本高于Qt5.12.12的编译环境,WebEngine运行需要额外依赖库,执行以下命令安装:

sudo apt install libnss3 libx11-xcb1 libxcb-dri3-0 libdrm2 libgbm1 libasound2

2. 关闭WebEngine沙箱

旧版Qt WebEngine在新系统中可能因沙箱权限限制无法启动渲染进程,可通过两种方式关闭:

  • 运行程序时添加参数:
    ./browser --no-sandbox
    
  • 在代码中初始化QApplication前设置环境变量:
    int main(int argc, char *argv[])
    {
        qputenv("QTWEBENGINE_DISABLE_SANDBOX", "1"); // 添加这行
        QApplication a(argc, argv);
    
        QWebEngineView view;
        view.load(QUrl(QString("https://qt-project.org/")));
        view.resize(1024, 750);
        view.show();  
    
        return a.exec();
    }
    

3. 确保Qt库路径正确

运行程序时需让系统找到Qt的库文件,可临时设置环境变量:

export LD_LIBRARY_PATH=/home/Qt5.12.12/5.12.12/gcc_64/lib:$LD_LIBRARY_PATH
./browser

或者在CMakeLists.txt中添加RPATH配置,编译后无需手动设置:

# 在add_executable之后添加
set_target_properties(browser PROPERTIES
    INSTALL_RPATH "/home/Qt5.12.12/5.12.12/gcc_64/lib"
    BUILD_WITH_INSTALL_RPATH ON
)

4. 测试本地页面排除网络问题

加载本地HTML文件测试是否能正常渲染,排除网络访问问题:

view.load(QUrl("file:///home/your-user/test.html")); // 替换为实际本地HTML路径

内容的提问来源于stack exchange,提问作者sushant singh sikarwar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:47:27