C++/Qt 小知识记录7

news2025/3/15 0:17:18

工作中遇到的一些小问题,总结的小知识记录: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()后会自适应内容大小:
    在这里插入图片描述在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Map集合之HashMap细说

最近在看面试题,看到了hashmap相关的知识,面试中问的也挺多的,然后我这里记录下来,供大家学习。 Hashmap为什么线程不安全 jdk 1.7中,在扩容的时候因为使用头插法导致链表需要倒转,从而可能出现循环链表问…

图像分割(四)---(图像显示、灰度直方图和三维灰度图综合分析选取最佳分割方法)

一、引言 对彩色图像进行分割的一种常用方法,是先把彩色图像转灰度图像,然后再选择合适的阈值进行二值分割。但有时彩色图像转灰度图像后不具有典型的双峰特性,二值分割效果不好。本文章提出一种确定彩色图像分割方法的新思路。首先读入一幅彩…

2024山东大学软件学院创新项目实训(9)使用OpenCompass进行模型评估

下载好OpenCompassData-core-20231110.zip 之后,解压压缩包 unzip OpenCompassData-core-20231110.zip 运行代码: python run.py --datasets ceval_gen --hf-path /hy-tmp/7B21/merged --tokenizer-path /hy-tmp/7B21/merged --tokenizer-kwargs p…

【数据结构】线性表之《栈》超详细实现

栈 一.栈的概念及结构二.顺序栈与链栈1.顺序栈2.链栈1.单链表栈2.双链表栈 三.顺序栈的实现1.栈的初始化2.检查栈的容量3.入栈4.出栈5.获取栈顶元素6.栈的大小7.栈的判空8.栈的清空9.栈的销毁 四.模块化源代码1.Stack.h2.Stack.c3.test.c 一.栈的概念及结构 栈:一种…

WDG开门狗

WDG开门狗简介 独立看门狗,它的特点就是独立运行,对时间精度要求较低。独立运行就是独立看门狗的时钟是专用的,LSI内部低速时钟,即使主时钟出现问题了,看门狗也能正常工作,这也是独立看门狗独立的得名原因&…

【34W字CISSP备考笔记】域1:安全与风险管理

1.1 理解、坚持和弘扬职业道德 1.1.1.(ISC)职业道德规范 1、行为得体、诚实、公正、负责、守法。 2、为委托人提供尽职、合格的服务。 3、促进和保护职业。 4、保护社会、公益、必需的公信和自信,保护基础设施。 1.1.2.组织道德规范 1、RFC 1087 &#xff0…

本科生大厂算法岗实习经验复盘:从投递到面试的底层思维!

目录 投递渠道boss直聘官网邮箱内推 面试准备leetcode八股深挖项目自我介绍mock面试技巧答不出来怎么办coding反问 复盘技术交流群用通俗易懂方式讲解系列 节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面…

实战电商大数据项目搭建||电商大数据采集||电商API接口

我会提供给你大概1亿条真实的互联网用户上网数据,至于来源,我先不告诉你,绝对是你在网络上无法找到的宝贵数据源。 此外,还会给你提供一个基于当前数据特点而设计的大数据处理方案。 当然,为了防止用户的隐私部分被泄露…

【已解决】SpringBoot图片更新需重启服务器才能显示

问题描述 1、更新头像,并跳转回列表页,发现显示不出来 2、但是前端获取用户头像的信息是在加载页面就会被调用的,同时前端也不存在所谓的缓存问题,因为没有动这部分代码。 但查看响应是能获得正确的信息(前端打印图片…

GitHub Copilot 登录账号激活,已经在IntellJ IDEA使用

GitHub Copilot 想必大家都是熟悉的,一款AI代码辅助神器,相信对编程界的诸位并不陌生。 今日特此分享一项便捷的工具,助您轻松激活GitHub Copilot,尽享智能编码之便利! GitHub Copilot 是由 GitHub 和 OpenAI 共同开…

2024年安全员-A证证考试题库及安全员-A证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年安全员-A证证考试题库及安全员-A证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机出的…

合并有序链表

合并有序链表 图解代码如下 图解 虽然很复杂,但能够很好的理解怎么使用链表,以及对链表的指针类理解 代码如下 Node* merge_list_two_pointer(List& list1, List& list2) {Node* new_head1 list1.head;Node* new_head2 list2.head;Node* s…

FFmpeg编译4(1)

ffmpeg.cffmpeg.h 修改ffmpeg文件 修改刚刚拷贝的ffmpeg.c文件,找到int main(int argc, char **argv)函数,将其替换为int run(int argc, char **argv)在修改后的run(int argc, char **argv) 末尾(retrun 之前)加上如上如下代码&…

跟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…

【完全复现】基于改进粒子群算法的微电网多目标优化调度(含matlab代码)

目录 主要内容 部分代码 结果一览 下载链接 主要内容 程序完全复现文献模型《基于改进粒子群算法的微电网多目标优化调度》,以微电网系统运行成本和环境保护成本为目标函数,建立了并网方式下的微网多目标优化调度模型,通过改进…

数组和链表的区别是什么?

引言:本文旨在深入探讨数组和链表之间的区别,分析它们在不同情境下的优缺点,并探讨如何根据应用需求选择合适的数据结构。通过深入理解数组和链表的内部工作原理和应用场景,读者将能够更好地应用这些知识解决实际问题,…

【Gradio】从 BigQuery 数据创建实时仪表板

Google BigQuery 是一个基于云的服务,用于处理非常大的数据集。它是一个无服务器且高度可扩展的数据仓库解决方案,使用户能够使用类 SQL 查询分析数据。 在本教程中,我们将向您展示如何在 Python 中查询 BigQuery 数据集,并使用 g…

【论文阅读】-- 评估叠加时间序列和时间事件序列可视化中的对齐方法

中文标题 摘要1 引言2 相关工作2.1 时间事件序列可视化2.2 理解时间事件序列的任务 3个假设4 对比评价4.1 刺激和任务4.2 程序4.3 参与者4.4 测量与分析 5 结果与讨论5.1 前兆和后果事件5.2 中间事件 6 反思和设计意义7 结论致谢参考文献 期刊: IEEE VIS (发表日期:…

2024年【T电梯修理】免费试题及T电梯修理考试总结

题库来源:安全生产模拟考试一点通公众号小程序 T电梯修理免费试题参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总,相对有效帮助T电梯修理考试总结学员顺利通过考试。 1、【多选题】TSGT7005-2012《…

企业该如何防查盗版?如何防软件后台泄密数据?

随着信息化的发展,企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中,会遇到各种各样不容忽视的风险,例如员工主动故意的数据泄漏,后台应用程序偷偷向外部发信息,木马间谍软件的外联,以…