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

如何解决ZorinOS 17下Qt编译报错‘qwidgetsglobal.h not found’

解决ZorinOS 17中Qt5/Qt6编译时找不到qtwidgetsglobal.h的问题

问题描述

编译Qt5 C++程序时出现以下错误:

In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QApplication:1,
                 from main.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtWidgets/qapplication.h:43:10: fatal error: QtWidgets/qtwidgetsglobal.h: No such file or directory
   43 | #include <QtWidgets/qtwidgetsglobal.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

环境为基于Ubuntu的ZorinOS 17,系统无qt5-default包,手动安装Qt模块后Qt5、Qt6均出现该错误,通过apt无法找到与qwidgetsglobal相关的包。此前Windows MSYS2 Mingw-w64环境中Qt5正常、Qt6无法使用,当前ZorinOS上Qt5也报此错。

用户代码示例:

#include <qt5/QtWidgets/QApplication>
#include <qt5/QtWidgets/QPushButton>

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

    // Create a QPushButton with the label "Click Me!"
    QPushButton button("Click Me!");

    // Connect the button's clicked signal to the slot handling the click event
    QObject::connect(&button, &QPushButton::clicked, [&]() {
        // Slot code - executed when the button is clicked
        qDebug("Button Clicked!");
    });

    // Set up the main window
    button.show();

    // Start the application event loop
    return app.exec();
}

解决方案

1. 修正代码中的头文件引用

代码中无需添加qt5/前缀,系统安装的Qt头文件路径已在编译器搜索范围内,修改include语句为:

#include <QApplication>
#include <QPushButton>

2. 确保Qt开发包安装完整

  • 对于Qt5,执行以下命令安装/重装核心开发包:
    sudo apt update
    sudo apt install --reinstall qtbase5-dev qtbase5-dev-tools pkg-config
    
  • 对于Qt6,对应安装命令:
    sudo apt update
    sudo apt install --reinstall qt6-base-dev qt6-base-dev-tools pkg-config
    

3. 使用正确的编译方式

方式一:用qmake编译(推荐)

  1. 创建项目配置文件main.pro:
    # Qt5版本
    QT += widgets
    SOURCES += main.cpp
    
    # 如果是Qt6,替换为以下内容
    # QT += widgets core gui
    
  2. 执行编译命令:
    # Qt5
    qmake-qt5 main.pro && make
    
    # Qt6
    qmake6 main.pro && make
    

方式二:直接用g++编译

利用pkg-config自动获取编译参数:

  • Qt5:
    g++ main.cpp -o qt_app $(pkg-config --cflags --libs Qt5Widgets)
    
  • Qt6:
    g++ main.cpp -o qt_app $(pkg-config --cflags --libs Qt6Widgets)
    

4. 验证头文件存在性

检查qtwidgetsglobal.h是否存在于正确路径:

  • Qt5路径:/usr/include/x86_64-linux-gnu/qt5/QtWidgets/QtWidgets/qtwidgetsglobal.h
  • Qt6路径:/usr/include/x86_64-linux-gnu/qt6/QtWidgets/QtWidgets/qtwidgetsglobal.h
    如果路径不存在,说明包安装不完整,重新执行步骤2的重装命令。

内容的提问来源于stack exchange,提问作者Diya Al Deen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:47:03