error: C1083: 无法打开包括文件: “QtGui/QApplication”: No such file or directory

news/2024/5/3 8:38:33/文章来源:https://blog.csdn.net/aoxuestudy/article/details/129684631

Qt系列文章目录

文章目录

  • Qt系列文章目录
  • 前言
  • 一、原因
  • 二、解决办法
    • 1.修改pro工程文件
    • 2.在main.cpp中
  • 三、总结

前言

当我们从网上或者从打开别人的工程师,报错,C1083: 无法打开包括文件: “QtGui/QApplication”。
原因:Qt5里不再用QtGui模块,而是使用QtWidgets模块。
error: C1083: 无法打开包括文件: “QMainWindow”: No such file or directory
error: C1083: 无法打开包括文件: “QGraphicsItem”: No such file or directory
error: C1083: 无法打开包括文件: “QGraphicsView”: No such file or directory
error: ‘QApplication’ file not found
error: C1083: 无法打开包括文件: “QtGui/QApplication”: No such file or directory

在这里插入图片描述

一、原因

报错是因为我们用Qt5打开Qt4版本时,Qt5里不再用QtGui模块,而是使用QtWidgets模块。
Qt5下,QWidget系列从QtGui中被剥离出去,成为单独的QtWidget模块。随着Qt Quick2的引入,QtDeclarative也逐渐和QWidget系列也脱离关系。

最终:在Qt5下的GUI编程,有两套不同的东西

QtWidget (使用一个被称为 BackingStore 的东西)

QtQuick (使用一个被称为 Scene Graph 的东西)

Qt4中的QDeclarativeView等一系列的东西被改成了QQuickView和QQmlItem等分别放到了QtQuick和QtQml模块。
QQuickView这一套框架完全脱离了QWidget的束缚,一路从QSurface到QWindow继承下来,虽说是窗口,但感觉却又不像是窗口。
QQuickView本能是使用OpenGL,使用硬件加速。

QQuickView 提供了一个窗体用于显示UI
QQmlEngine 提供QML运行的环境
QQuickWindow 显示窗体,以及对item对象的管理及用户交互

QQmlApplicationEngine 从Qt5.1开始提供的一个便捷对象 包含QQmlEngine和QQmlComponent能够根据一个qml文件创建一个application。

QQmlContext 类为对象的实例化以及表达式的评估提供了一个上下文环境。所有的对象都在一个特定的上下文中实例化,并且应用程序运行中要执行的表达式都在一个特定的上下文中执行。这个上下文定义了符号是如何被解析的,以及表达式操作的值。

QQmlComponent 类可以用来加载QML文档。它需要QQmlEngine来实例化定义在QML文档中的对象层次

一个典型的QML应用程序有一个C++函数的入口点,该入口点是:实例化一个QQmlEngine并且使用QQmlComponent加载一个QML文档。引擎(QQmlEngine对象)提供了一个默认的QQmlContext,这是一个顶级的上下文,用于执行定义在QML文档中的方法和表达式。定义在QML文档中的对象层次将会通过调用QQmlComponent实例化对象的create()方法被实例化。

客户端可能需要通过注入属性或者对象到上下文中修改引擎提供的默认QQmlContext。它们可以通过调用QQmlEngine::rootContext()方法来访问顶级的上下文。

在实例化对象之后,客户端通常就将控制权传递给应用程序的事件循环,以使得用户输入时间(例如鼠标点击)可以被应用程序分发和处理。

QML里面Row代表一行数据,所以item是按列来排的

QML里面Column是代表一列数据,所以Item是按行排的

在Row和Column中anchors(锚点)是不起作用的

RowLayout和ColumnLayout 也是代表一行与一列但是提供了多种的Layout附加属性并且可以使用anchors

二、解决办法

1.修改pro工程文件

在pro文件中加入:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

在.pro里加上QT += widgets
在这里插入图片描述

2.在main.cpp中

删除:#include <QtGui/QApplication>
添加:#include

重新 qmake 再重新编译工程

在这里插入图片描述

//#include <QtGui/QApplication>#include "mainwindow.h"
#include "target.h"
#include <math.h>
#include "radarview.h"
#include <QTextCodec>
#include <QTime>
#include <QApplication>
static const int TargetCount = 200;int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;//w.show();
//    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));QGraphicsScene scene;scene.setSceneRect(-400,-300,800,600);scene.setItemIndexMethod(QGraphicsScene::NoIndex);for(int i = 0; i < TargetCount; ++i){Target * target = new Target;target->setPos(qrand()%800 - 400, qrand()%600 -300);target->setVisible(true);scene.addItem(target);}radarView view(&scene);view.setRenderHint(QPainter::Antialiasing);view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);view.setBackgroundBrush(QColor(0,0,0));view.setCacheMode(QGraphicsView::CacheBackground);view.setDragMode(QGraphicsView::ScrollHandDrag);view.setWindowTitle(QObject::tr("haizhan"));view.resize(800,600);view.show();return a.exec();
}

三、总结

不要想着安了Qt5,就直接用他来继续之前Qt4写的工程,不如还是用Qt4吧,有新工程从头开始可以使用Qt5。虽然digia官方说完美支持Qt4,一般情况下还是要修改配置的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_274004.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 安装 nginx无坑版

一. 拉取镜像 docker pull nginx二. 创建挂载目录 mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/log mkdir -p /usr/local/nginx/html三. 从nginx容器里复制nginx的配置文件到主机里 创建个容器 docker run --name nginx -p 80:80 -d nginx将容器内的配置文件…

mysql之窗口函数练习

&#x1f34a;今天复习一下mysql中的窗口函数&#xff0c;主要是通过几道练习题复习和加深一下对窗口函数的理解&#xff0c;对往期内容感兴趣的同学可以参考如下内容&#x1f447;: 链接: 牛客SQL大厂真题——某音短视频.链接: 京东数据分析SQL面试题.链接: 百度用户增长SQL面…

Java实习生------MySQL10道面试题打卡

今日语录&#xff1a;“没有执行力&#xff0c;就没有竞争力 ”&#x1f339; 参考资料&#xff1a;图解MySQL、MySQL面试题 1、事务有哪些特性&#xff1f; 原子性&#xff1a; 一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不完成&#xff0c;不会出现…

Linux系统的安装以及参数配置 -- VMware(虚拟机)安装--ubuntu 20.04--VMware Tools工具安装

Linux系统的安装以及参数配置 PS&#xff1a;本文章为上课后整理笔记&#xff0c;作为以后学习工作的学习使用&#xff0c;也作为一次课程记录 一、Linux系统的安装常用方法 – 3种 1.直接Linux操作替换Windows – 专业Linux开发者 – 接受Linux相关软件的使用 2.安装双系统…

诗佛王维,眼前的苟且和远方的田野?

转自&#xff1a;媲美李白杜甫的诗人&#xff0c;他的人生可以复制_百科TA说 (baidu.com)他受到的羁绊&#xff0c;他做出的选择&#xff0c;提供了一种温润平和的过日子模式。大部分人无法决绝地脱离社会&#xff0c;隐遁起来&#xff0c;也无法在社会中不计底线&#xff0c;混…

JavaScript性能优化小窍门汇总(含实例)

在众多语言中&#xff0c;JavaScript已经占有重要的一席之地&#xff0c;利用JavaScript我们可以做很多事情 &#xff0c; 应用广泛。在web应用项目中&#xff0c;需要大量JavaScript的代码&#xff0c;将来也会越来越多。但是由于JavaScript是一个作为解释执行的语言&#xff…

Vue|样式绑定

class 与 style 是 HTML 元素的属性&#xff0c;用于设置元素的样式&#xff0c;我们可以用 v-bind 来设置样式属性。Vue.js v-bind 在处理 class 和 style 时&#xff0c; 专门增强了它。表达式的结果类型除了字符串之外&#xff0c;还可以是对象或数组。 文末名片获取源码 精…

根据平均分来划分等级-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第2章-课后作业)

【案例2-1】 根据平均分来划分等级 一、案例描述 考核知识点 switch语句 练习目标 掌握switch语句的使用。 需求分析 switch语句也是多分支语句&#xff0c;针对某个表达式的值做出判断&#xff0c;来决定执行哪一段代码&#xff0c;本案例用于实现根据输入的小明同学的5门课…

百度CTO王海峰:全栈AI技术加持,打造新一代大语言模型文心一言

3月16日&#xff0c;百度在北京总部召开新闻发布会&#xff0c;百度创始人、董事长兼首席执行官李彦宏和百度首席技术官王海峰出席&#xff0c;李彦宏展示了新一代知识增强大语言模型文心一言在文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成五个使用场景中的综合…

【linux】管道pipe(),dup()系统调用

int pipe(int p[2]) 函数作用&#xff1a;生成一个管道&#xff0c;将管道读端的文件标识符存到p[0]中&#xff0c;将管道写端的文件标识符存到p[1]中。返回值&#xff1a;若成功返回0&#xff0c;失败返回-1 管道的理解 如图&#xff0c;当创建完管道以后的父进程fork出两个子…

Python中模块是个啥

昨天有粉丝问我说&#xff0c;啥是模块&#xff1f;经常听别人口中提这个词&#xff0c;但就是不懂。 模块可以认为是一盒主题积木&#xff0c;通过它可以拼出某一主题的东西。这与之前介绍的函数不同&#xff0c;一个函数相当于一块积木&#xff0c;而一个模块中可以包括很多函…

【C++进阶】unordered_set和unordered_map的介绍及使用

文章目录unordered系列容器介绍unordered_setunordered_set的模板参数unordered_set的函数接口介绍unordered_set的重要接口的使用构造函数增删查迭代器的使用unordered_mapunordered_map的模板参数unordered_map的函数接口介绍unordered_map的重要接口的使用增删查改迭代器的使…

EMQ 南洋万邦云边一体化方案:激活数据潜力,打造智慧工业园区

在工业 4.0 的浪潮之中,全球制造业再度振兴和崛起,并经历着前所未有从流程驱动转向数据驱动的变革。 近年来,数智化绿色工厂正在成为制造业竞争力的主要驱动力,依托物联网、工业互联网,人工智能等先进制造技术的深度融合,智能工厂变得更高效、更灵活,拥有更高的交付韧性和成本…

解忧杂货铺(四):Hightec生成HEX方法+小功能开启

目录 1、概述 2、 4.6.6的生成方法 3 、HighTEC4.9.3的生成.hex方法 4、MAP文件生成方法 5、elf生成 6、编译优化 7、输出编译过程中的详细信息 8、快速定位内存 1、概述 本文章纯属整合&#xff0c;大部分属于外链&#xff0c;补充一下&#xff0c;后面是自己记录的了…

由浅入深之字符串的算法题(vs: chatGPT做算法)

背景俗话说&#xff0c;温故而知新。chatGPT效果太惊艳了&#xff01;简直就是碾压的效果。但是还要有希望&#xff0c;先拾取&#xff0c;再创新。先了解&#xff0c;再超越吧。ps: 再刷最后一遍算法题思路。顺便基于chatGPT3.5感受一下大模型的魔力。字符串基础C/C每个字符串…

编程题]组队竞赛(Java实现)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

十七、队列

文章目录1、基本概念&#xff08;队列实际上就是一个结构体&#xff0c;可以理解为就是一个数组&#xff09;2、使用场景&#xff1a;任务间或任务与中断间传递数据3、使用队列的好处&#xff08;1&#xff09;休眠唤醒&#xff08;2&#xff09;提高CPU利用率4、队列的核心5、…

WebService简单入门

1. JAX-WS发布WebService 创建web工程 创建simple包&#xff0c;和server、client两个子包。正常情况下server和client应该是两个项目&#xff0c;这里我们只是演示效果&#xff0c;所以简化写到一个项目中&#xff1a; 1.1 创建服务类Server package simple.server;import ja…

JavaScript正则表达式知识拓展总结

JavaScript的正则表达式是前端中比较重要的部分&#xff0c;正则表达式主要用于字符串处理&#xff0c;表单验证等场合&#xff0c;实用高效。JavaScript中的正则表达式比起C#中的正则表达式要弱很多&#xff0c;但基本够用了。在js中定义正则表达式很简单&#xff0c;有两种方…

搭建SFTP服务安全共享文件,实现在外远程访问「内网穿透」

文章目录1.前言2.本地SFTP服务器搭建2.1.SFTP软件的下载和安装2.2.配置SFTP站点2.3.Cpolar下载和安装3.SFTP服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言 现在的网络发达&#xff0c;个人电脑容量快速上升&#xff0c;想要保存的数据资料也越…