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} PRIVATEQt5::CoreQt5::GuiQt5::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}/includeSrc
)

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.mzph.cn/web/32139.shtml

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

相关文章

基于JSP的交通事故档案管理系统

开头语:你好,我是计算机学长猫哥,如果你对系统有更多的期待或建议,欢迎随时联系我。 开发语言:Java 数据库:MySQL 技术:JSPJava 工具:ECLIPSE、Tomcat 系统展示 首页 管理员界…

车辆数据的提取、定位和融合(其一 共十二篇)

第一篇: System Introduction 第二篇:State of the Art 第三篇:localization 第四篇:Submapping and temporal weighting 第五篇:Mapping of Point-shaped landmark data 第六篇:Clustering of landma…

Dockerfile实战

Dockerfile是用来快速创建自定义镜像的一种文本格式的配置文件,在持续集成和持续部署时,需要使用Dockerfile生成相关应用程序的镜像。 Dockerfile常用命令 FROM:继承基础镜像MAINTAINER:镜像制作作者的信息,已弃用&a…

文件管理—linux(基础IO)

目录 ​编辑 一、C语言文件接口(库函数) hello.c写文件 hello.c读文件 输出信息到显示器 stdin & stdout & stderr 二、系统文件I/O(系统调用) hello.c 写文件: hello.c读文件 接口介绍 open open…

JetBrains PhpStorm 2024 mac/win版:探索PHP之美,智慧编程新境界

JetBrains PhpStorm 2024是一款卓越的PHP集成开发环境(IDE),专为满足现代PHP开发者的需求而精心打造。它凭借强大的功能和出色的性能,赢得了全球开发者的广泛赞誉。 PhpStorm 2024 mac/win版获取 PhpStorm 2024提供了智能的代码编辑功能,包括…

【TKGQA】关于时间知识图谱问答的一篇综述阅读

前言 时间知识图谱问答(TKGQA)是KBQA中一个关注时间问题的重要子任务。时间问题包含时间约束、需要时间标记的答案,反映了现实世界事件的动态和演变性质。 一、TKGQA 1.1 概述 时间知识图谱(TKG): 通常表…

vcpkg安装g2o,提示找不到cs.h,debug模式运行提示找不到libcxsparse.dll

1 找不到cs.h 在VS中双击错误提示&#xff0c;定位到csparse_extension.h文件&#xff0c;将 #include<cs.h>修改为 // #include<cs.h> #include <suitesparse/cs.h>即可正常编译 2 debug模式找不到libcxsparse.dll 我这边直接使用RelWithDebug模式&…

代码随想录算法训练营Day22|235. 二叉搜索树的最近公共祖先 ,701.二叉搜索树中的插入操作 ,450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先&#xff1a;代码随想录 这道题目的意思和前面的二叉树的最近公共祖先一样&#xff0c;只不过是换成了二叉搜索树&#xff0c;我采用的方法还是和普通二叉树一样&#xff0c;利用回溯的方法&#xff0c;来看具体代码的实现 class Solution { publ…

Android 添加自己的时钟小部件

小部件&#xff0c;也叫微件&#xff0c; 它的介绍参考官网 应用 widget 概览 https://developer.android.google.cn/develop/ui/views/appwidgets/overview?hlzh-cn 直接上图&#xff0c;原生系统上&#xff0c;时钟应用的小部件效果。 我也整一个。 1.创建小部件布局文…

tp5学习基本控制器和视图

1 文件结构 正在上传…重新上传取消 application 主要操作目录 extend 扩展 public 入口文件 runtime 运行时文件 thinkphp 核心代码 vendor 三方扩展 2 public/index.php 解析 正在上传…重新上传取消 .htaccess Apache 可写文件 index.php 主目录 router.php 路由文件 3 inde…

C++ 丑数

描述 把只包含质因子2、3和5的数称作丑数&#xff08;Ugly Number&#xff09;。例如6、8都是丑数&#xff0c;但14不是&#xff0c;因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第 n个丑数。 数据范围&#xff1a;0≤&#x1d45b;≤20000≤n≤…

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

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

乳腺癌患者的生存分析:从传统方法到DeepSurv

一、引言 乳腺癌作为全球女性中最常见的癌症之一&#xff0c;其早期诊断和治疗对于提高患者生存率至关重要。随着医学技术和数据分析方法的不断发展&#xff0c;乳腺癌患者的生存分析逐渐成为研究的热点。通过生存分析&#xff0c;我们可以更好地理解疾病进展、预测患者预后&am…

Python发送HTML邮件有哪些步骤?怎么设置?

Python发送HTML邮件如何实现&#xff1f;Python发送邮件的策略&#xff1f; HTML邮件不仅可以包含丰富的文本格式&#xff0c;还可以插入图片、链接和其他多媒体内容&#xff0c;从而提升邮件的美观性和功能性。AokSend将详细介绍Python发送HTML邮件的主要步骤&#xff0c;帮助…

Redis进阶 - Redis 淘汰策略

我们知道Redis是分布式内存数据库&#xff0c;基于内存运行&#xff0c;可是有没有想过比较好的服务器内存也不过几百G&#xff0c;能存多少数据呢&#xff0c;当内存占用满了之后该怎么办呢&#xff1f;Redis的内存是否可以设置限制&#xff1f; 过期的key是怎么从内存中删除的…

【CSS in Depth2精译】1.4 简写属性

文章目录 1.4 简写属性1.4.1 当心简写属性悄悄覆盖其他样式1.4.2 记住简写值的顺序1 上、右、下、左顺序2 先水平、再垂直的顺序 1.4 简写属性 简写属性&#xff08;Shorthand properties&#xff09; 是可以一次性设置多个属性值的样式属性。例如&#xff0c; font 就是一个简…

FreeRTOS必考面试题及参考答案

什么是RTOS?FreeRTOS是什么?它主要应用于哪些领域? RTOS,即实时操作系统(Real-Time Operating System),是一种专门为实时应用程序设计的操作系统,它强调的是对外部事件的快速响应和可预测性。实时系统通常要求在严格的时限内完成关键任务,因此RTOS具备优先级调度、确…

柯桥商务英语培训|老外和你说Tom和Jack,可不是在说人名!所以是啥意思?

小明和小李&#xff0c;这两个人在中国相信没有谁不认识他们了。而且有关他们的梗更是传遍大街小巷。 例如&#xff1a;小明他爷爷活了103岁&#xff0c;小明做数学题&#xff0c;又或者是小李的老婆比小明小2岁等等。 其实在国外&#xff0c;也有这么两个人像小明、小李一样&a…

Windows服务运维脚本指南

我在写go服务程序&#xff0c;而且运行在Windows上&#xff0c;为了方便启停服务&#xff0c;我决定写一个脚本来管理服务。由于运行在Windows上&#xff0c;所以选择bat批处理脚本。 首先我们需要确定一下脚本的结构。我们需要4个参数&#xff0c;用来启动、重启、停止应用以…

面向对象的进阶---static

1.static 静态变量 package com.itheima.a01staticdemo01;public class Student {private String name;private int age;public static String teacherName;public Student() {}public Student(String name, int age) {this.name name;this.age age;}/*** 获取* return n…