C++/Qt 小知识记录7

工作中遇到的一些小问题,总结的小知识记录:C++/Qt

小知识7

  • 编译FFMPEG遇到的问题
    • CMakeLists.txt配置FFMPEG的依赖方式:
  • x264在Windows下编译生成*.lib
  • VS编译Qt工程时,遇到提示Change Qt Version的情况
  • 在QtOsg的窗口上嵌入子窗口,存在残影的情况
  • QWidget如何根据内容自适应窗口大小

编译FFMPEG遇到的问题

具体的编译方法就略了,可以参考:

https://blog.csdn.net/weixin_58320200/article/details/134010291

主要是调用的时候,因为忽略了一个细节,就导致遇到了依赖问题:
在cpp下引用FFMPEG的头文件,需要用extern添加头文件(在上面的引用文章中其实也提到了):
因为FFmpeg是一个用C语言编写的库,所以要告诉C++编译器以C语言的方式进行编译。
当C++程序调用C语言库时,如果直接包含C语言库的头文件,C++编译器会对库中的函数进行名称修饰,这会导致链接时找不到对应的函数名,因为链接器期望的是原始的C语言函数名。
在这里插入图片描述

CMakeLists.txt配置FFMPEG的依赖方式:

#依赖库
target_link_libraries(${PROJECT_NAME} 
    PRIVATE
        Qt5::Core
        Qt5::Gui
        Qt5::Widgets
        ${OpenCV_LIBS}
        ${FFmpeg_DIR}/bin/avformat.lib
        ${FFmpeg_DIR}/bin/avcodec.lib
        ${FFmpeg_DIR}/bin/avdevice.lib
        ${FFmpeg_DIR}/bin/avfilter.lib
        ${FFmpeg_DIR}/bin/avutil.lib
        ${FFmpeg_DIR}/bin/postproc.lib
        ${FFmpeg_DIR}/bin/swresample.lib
        ${FFmpeg_DIR}/bin/swscale.lib
)
#头文件
target_include_directories(${PROJECT_NAME}
    PRIVATE
        ${OpenCV_INCLUDE_DIRS}
        ${FFmpeg_DIR}/include
	Src
)

x264在Windows下编译生成*.lib

在windows下,使用MSYS2的MINGW64编译。

  1. C:\msys64下的msys2_shell.cmd修改:
    set MSYS2_PATH_TYPE=inherit的注释打开,为了能使用MSVC的cl.exe工具:
    在这里插入图片描述
    测试:
    在这里插入图片描述
  2. 用mingw64执行x264的编译脚本:
    在这里插入图片描述
  3. 生成结果,但lib下是libx264.dll.a,不是lib后缀,而且不能直接改,因为ffmpeg依赖时会有问题。
    在这里插入图片描述
  4. 用MinGW的工程转出lib库
    进入bin目录下,对libx264-164.dll进行操作,执行如下操作,先生成def,再生成lib:
    pexports libx264-164.dll > libx264-164.def
    lib /machine:ix86 /def:libx264-142.def
    注意:x64的要执行 lib /machine:x64 /def:libx264-164.def
    在这里插入图片描述
  5. bin目录下的生成结果,可以把lib拷入到lib目录,方便后面的ffmpeg编译:
    在这里插入图片描述
  6. 编译完成ffmpeg后,查看ffmpeg是否关联了x264:
    执行:ffmpeg -h encoder=libx264
    在这里插入图片描述

VS编译Qt工程时,遇到提示Change Qt Version的情况

如图,在编译Qt工程时遇到如下情况,多数情况下是因为VS工程Check到其它机器上后,Qt的路径不匹配,需要手动切换Qt Version。
在这里插入图片描述
一般的方法,在解决方案资源管理器的根目录上,单击右键弹出菜单,选择“Change Solution’s Qt Version”,然后VS的Qt插件会自动build一次关联了Qt的工程。
在这里插入图片描述
如果还是没解决,就只能对指定的工程进行手动切换,在工程的根节点下(注意不是解决方案的根节点),选择“Qt Project Setting”,然后在弹出表格的“Version”行选择本机内的Qt版本:
在这里插入图片描述
在这里插入图片描述
*这种情况在VS+Qt方式,根据向导建立的工程下,会出现,如果使用CMakeLists.txt方式构建VS工程,不会出现,毕竟Qt环境在工程生成的时候就会关联。

在QtOsg的窗口上嵌入子窗口,存在残影的情况

如图为在一个Qt的Osg窗口上,嵌入了一个无边框的QDialog,里面的内容一改变,就导致出现残影的无法刷新(即使手动调用刷新也无法解决)
后来排查,主要是在setWindowFlags,直接把QDialog的属性给覆盖了,导致它就是个QWidge的属性,如果是QWidget嵌入则绘制机制会被影响:
错误的实现:

setWindowFlags(Qt::FramelessWindowHint); //不能这么调用

在这里插入图片描述
正确的实现:

setWindowFlags(windowFlags() | Qt::FramelessWindowHint); //保留QDialog窗口属性的前提下,去掉边框标题栏
setAttribute(Qt::WA_TranslucentBackground); //可支持半透明

在这里插入图片描述

QWidget如何根据内容自适应窗口大小

窗口内的控件设置显隐后,希望窗口大小能根据当前的内容自适应大小。

参考:https://blog.csdn.net/xiaopei_yan/article/details/78930650

  • 方法一:比较“笨”的方法就是根据控件的显隐,计算当前显示的控件的大小,对窗口进行resize。
  • 方法二:QWidget提供了adjustSize()的函数,可以根据当前窗口内显示的内容进行自适应调整。
    在这里插入图片描述
    如图为同一QWidget窗口,只是控件显隐和内容变了,在调用adjustSize()后会自适应内容大小:
    在这里插入图片描述在这里插入图片描述

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

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

相关文章

面试官:请你实现三栏布局并且优先加载中间内容 我:稳啦- ̗̀(๑ᵔ⌔ᵔ๑)

前言 三栏布局是网页设计中一种经典布局方式,它将页面分为三个垂直部分:左栏、中栏和右栏,三栏在同一行显示。 这种布局模式在很多网站的首页或内容密集型页面中非常常见,因为它能够有效地组织信息,提供良好的用户体…

【产品应用】一体化步进伺服电机在吊装机器人中的应用

随着工业自动化和智能制造的发展,吊挂式智能巡检机器人逐渐成为许多工业场景中的重要角色。这类机器人不仅能够提升工作效率,减少人工干预,还能在复杂或危险环境中完成巡检任务。在这些机器人的设计与制造中,一体化步进伺服电机扮…

jrebel安装使用教程(2022.4.1版本)

本方法适用于jrebel2022.4.1版本,之后的版本不再适用。 1.下载插件 下载地址 2.安装插件 可以通过idea内部安装 也可以将插件解压进idea的安装目录下的plugins。 3.激活 Team URL中填入 https://jrebel.qekang.com/{guid}这里提供两个guid生成地址&#xf…

Redis学习|Redis基础知识、Redis五大数据类型、Redis三种特殊数据类型、Redis事务

Redis基础知识 redis默认有16个数据库,并且这个数量可以在conf配置文件中更改 默认使用的是第0个 可以使用 select 进行切换数据库! key *查看数据库所有的key 清除当前数据库 flushdb 清除全部数据库的内容FLUSHALL 为什么redis是6379!(了解一下即可!) Redis 是…

Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的

文章目录 Elasticsearch聚合查询说明空值率查询DSL Elasticsearch聚合基础知识扩展Elasticsearch聚合概念Script 用法Elasticsearch聚合查询语法指标聚合(Metric Aggregations)桶聚合(Bucket Aggregations)矩阵聚合(Ma…

福州大学 2022~2023 学年第 1 学期考试 A 卷压轴题参考答案

题目: 定义一个抽象类Structure(含有纯虚函数type函数,用以显示当前结构的类型; 含有show函数), 在此基础上派生出Building类, 用来存储一座楼房的层数、房间数以及它的总平方米数。 建立派生 类House&am…

Type-C连接器厂商对检测实验室的要求及重要性解析

Type-C连接器厂商对检测实验室的要求与重要性 Type-C连接器作为一种高速、全功能的接口标准,被广泛应用于各类电子产品中。作为Type-C连接器的制造商,对于产品的质量和性能要求是至关重要的。为了确保产品符合规范并满足市场需求,Type-C连接…

链动2+1模式:解锁用户留存与复购的增长密码

大家好,我是吴军,来自一家业界领先的软件开发公司,专注于为用户打造卓越的产品体验。今天,我想与大家探讨一个在我们产品运营中取得显著成效的策略——链动21模式,以及它是如何助力我们提升用户留存和复购率的。 尽管链…

跟TED演讲学英文:How language shapes the way we think by Lera Boroditsky

How language shapes the way we think Link: https://www.ted.com/talks/lera_boroditsky_how_language_shapes_the_way_we_think? Speaker: Lera Boroditsky Date: November 2017 文章目录 How language shapes the way we thinkIntroductionVocabularySummaryTranscriptA…

6.25世界白癜风日·成都博润白癜风医院获评“成都市医学重点专科”

夏日热情如江潮,勇攀高峰正当时。为激发新质生产力,驱动学术研究引领医院发展,也为了迎接 6.25 世界白癜风日。 6月22日,成都博润白癜风医院隆重举行成都市医学重点专科授牌新闻发布会暨成都市市级继续医学教育项目《难治性白癜风…

PythonScrapy爬虫被ban的一些解决办法

大多数python写爬虫都是当做工具在用,爬虫过程中都会遇到命中反爬导致无法继续访问。访问出现500或者其他服务器禁止错误,像下面这样 在这之前,默认你已经了解python及scrapy。具体selenium的使用方法可以查阅官方文档。 我的处理办法&#x…

Playwright-html-report源码解析

执行命令生成html格式报告 Playwright在执行完成测试,支持生成html格式的测试报告,如下图所示,使用"npx playwright test"执行测试,执行完成后,会提示“npx playwright show-report”命令。执行该命令&#…

Qt Object:智能即时聊天室项目

目录 1.项目介绍 2.设计思路 3.Pro文件配置 4.项目演示 5.项目开源 项目介绍 智能即时聊天室系统(AIChatProject)是一个高效、灵活的即时通讯解决方案。它融合了百度的开源大型语言模型——文心一言,通过API接口实现深度集成。系统专为聊天和…

文件上传漏洞-下篇

一、白名单绕过 目录路径检测绕过 00截断 简介: 0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测。 饶过条件 利用操作:Pass-12 要求&#xff…

关于application/x-www-form-urlencoded跟application/json请求的区别

当你的java方法是这样定义的 PostMapping("/rePushMedicalRecord") public String rePushMedicalRecord(RequestParam("topicId") String topicId){ } 参数是RequestParam接收,则请求时需要用application/x-www-form-urlencoded请求 如果是R…

多重排序【今日题记】

多重排序 多重排序题目分析思路代码代码结构体知识多重排序 需要对多个条件进行排序,因此可以称之为多重排序。 题目 某生物实验室记录了n种(n<=1000)病毒信息,每种病毒都有编号、传染性和致病性三个基本信息,编号是1000-9999的人工编号,其中的传染性和致病性是用0-10…

移动端的HSR技术

overdraw问题&#xff1a; overdraw顾名思义就是过度绘制&#xff0c;就是在渲染过程中**绘制一帧FBO&#xff08;或者RenderTarget&#xff09;**超过一次相同像素的现象!这个是CG的问题&#xff01;特别在是用来大量的透明混合的情况下会产生的&#xff0c;当然客户端andrio…

艾多美用“艾”为生命加油,献血活动回顾

用艾为生命加油 6月10日~16日&#xff0c;艾多美中国开启献血周活动&#xff0c;已经陆续收到来自烟台总部、山东、广东、河南、四川、重庆、贵阳&#xff0c;乌鲁木齐&#xff0c;吉林&#xff0c;等地区的艾多美员工、会员、经销商发来的爱心助力&#xff0c;截止到目前&…

KIVY BLOG Kivy tutorial 007: Introducing kv language

Kivy tutorial 007: Introducing kv language – Kivy Blog DECEMBER 18, 2019 BY ALEXANDER TAYLOR Kivy tutorial 007: Introducing kv language Kivy 导师课007&#xff1a; 介绍kv语言 Central themes: kv language, building a gui, integration with Python 中心主题:…

【React】富文本编辑器react-quill

安装 react-quill 富文本编辑器 npm i react-quill2.0.0-beta.2报错解决&#xff1a; npm i react-quill2.0.0-beta.2 --legacy-peer-deps导入编辑器组件和配套样式文件 import ReactQuill from react-quill // 1 import react-quill/dist/quill.snow.css // 2const Publi…