随笔分类 - C++
摘要:一、背景 在给Adobe Premiere/After Effects等后期制作软件开发第三方插件的时候,我们总希望插件依赖的动态库能够脱离插件的位置,单独存储到另外一个地方。这样一方面可以与其他程序共享这些动态库,还能保证插件安装时非常的清爽。就Adobe Premiere Pro/After E
阅读全文
摘要:一、翻译 在macOS平台上,系统会为应用程序菜单添加一些额外的菜单项。先来看一些典型的例子: 这个是Qt Creator的菜单,系统为应用程序菜单添加了一些桌面显示操作相关的菜单项; 这个是Qt Designer的应用程序菜单,也添加了一些额外的菜单项。并且我们可以注意到,这些菜单项在中文语言环境
阅读全文
摘要:一、背景介绍 用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现。Windows应用程序在安装的时候可以在注册表中写入相关的键值对。打开文件的时候,Windows Explorer会将文件完整的路径作为参数传递给关联的应用程序。这样就可以在启动
阅读全文
摘要:一、前情介绍 QApplication是Qt开发中经常用到的一个类,用来管理应用程序的生命周期。跟其相关的类还有QCoreApplication和QGuiApplication,分别用于不同场景下为应用程序的控制流和事件处理提供基础的框架。这三个类的构造函数都接收两个参数(分别是argc和argv)
阅读全文
摘要:一、正文 目前正在做一个视频处理相关的项目。项目的技术栈是这样的,UI层采用Qt来实现基本的数据展示和交互,底层音视频采用的是一套基于FFmpeg的视频处理框架。这是一套类似Microsoft Media Foundation的处理框架,采用管道流进行架构,解复用、解码、复用、编码及用户自定义操作都
阅读全文
摘要:背景介绍 这是一款采用Qt5编写的用于生成故障模拟波形的软件。生成的波形数据用于下发到终端机器生成对应的故障类型,用于培训相关设备维护人员的故障排查技能。因此,在这款软件中实现了故障方案管理、故障波形编辑下发、波形数据生成等基本功能。从拓扑结构来说,本软件处于服务端,而其他下游的终端机器都属于客户端
阅读全文
摘要:一、介绍 Adobe Premiere和After Effects在影视编辑、渲染领域已经得到广泛应用。全景视频在相应工具拼接好后也可以导入Premiere/After Effects后也可进行剪辑、渲染。但由于全景视频存在畸变、视角、拼接技术等因素,即使平铺时也无法很好的查看场景细节。这对于视频剪
阅读全文
摘要:一、介绍 摄像头图像采集处理在业界有着多种成熟的方案。从老的DirectShow、Grabber技术,到新的Windows Media Foundation框架,网络上都有着丰富的参考资料。OpenCV库里面甚至提供了非常简洁的接口,用户只要一两行代码即可实现数据采集、编解码等功能,使用起来甚是方便
阅读全文
摘要:一、需求分析 对于视频后期剪辑及相关从业人员来说,AE(After Effects)模板效果是一个不错的开始点。在模板效果的基础上,可以很快的做出各种炫酷的后期效果。但是在网上下载的模板工程中,往往包含了非常多的模板文字、图片、图形实体、AI资源等。这些资源文件往往并不是我们需要的,在使用模板时需要
阅读全文
摘要:引言 前面的一篇博文中总结了开发Windows Thumbnail Handler的一些经验。在公司实际项目中,需要同时针对图片和视频实现缩略图。同时还要在图片和视频文件的顶部加上LOGO。像如下这样的: 于是考虑了一下实现方案: (1)LOGO资源采用Base64编码编译到DLL中去 (2)公司自
阅读全文
摘要:一、引言 Windows Thumbnail Handler是Windows平台下用来为关联的文件类型提供内容预览图的一套COM接口。通过实现Thumbnail相关的COM接口,就可以为为自定义的文件格式提供内容预览图。如下图所示: Thumbnail handler以COM组件的形式注册使用。因此
阅读全文
摘要:一、介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布。这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中。其优势是简单单一,所有的依赖库都集中在一起,其缺点也很明显,可执行程序体量较大,光Qt核心库加起来就得十多兆。(2)制作安装包发布。这种方式的原理也简单...
阅读全文
摘要:概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式。无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的。当用户往下拖动滚动条或使用鼠标滚轮的时候,页面会自动加载剩余的内容。如下: 简约而不简单,正是这种别出心裁,突破常规的...
阅读全文
摘要:错误现象 近日由于项目需要,想要学习一下QWebView的使用。于是简单的建立了一个Qt工程,并编写了如下代码:#include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); ...
阅读全文
摘要:引言 上一篇中讲述了工具箱的添加。通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写。本文在前面的基础上实现窗体分割效果、堆栈式窗口以及Tab选项卡。窗体分割 窗体分割是一个常见的功能,尤其在一些IDE中用的非常广泛。主要是窗体分割能够在视觉上对程序功能进行分组分...
阅读全文
摘要:引言 在上一篇中讲述了主窗体的创建和设计。主窗体的无边框效果、阴影效果、拖动事件处理、窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨。这一篇继续讲述工具箱(Tool Button)的实现。另外,在实现的过程中还做了另外一个贴心的小功能:可伸缩的侧边栏。不过后来发现应用起来后...
阅读全文
摘要:引言 又有许久没有更新了。Qt,我心爱的Qt,为了找工作不得不抛弃一段时间,业余时间来学一学了。本来计划要写一系列关于Qt组件美化的博文,但是写了几篇之后就没坚持下去了。技术上倒是问题不大,主要是时间不够充裕。这段时间写几篇关于界面整体设计的博文,从最基础的界面元素开始,到最后构建一个页面元素丰...
阅读全文
摘要:问题描述 项目中需要做一个小功能:能够查看系统中当前正在运行的进程的内存信息,如内存块类型、分配状态、访问权限等。如下图所示: 需要的信息和上图相差无几。说起来也不算太难,毕竟现成的API已经提供了。我们要做的就是遍历获取每个进程的句柄,然后逐个打开就可以提取信息了。排查结论 但是,当我逐...
阅读全文
摘要:Qt中的表格控件可以通过从QTableView或QTableWidget派生子类实现。其中,QTableWidget只是对QTableView的一种简单封装。因为使用QTableView常常需要用户指定自定义的Model,这意味使用起来不够轻便。有时候我们只是想利用一些简单的表格功能,不需要对...
阅读全文
摘要:导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛。一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器。QLineEdit本身使用方法也很简单,无需过多的设置就能进行使用。于是这篇博文主要讲解如何对行文本编辑框QLineEdit进行定制。基本定制 为了简化工作,还是如同前面所说的,直接用Qt Designer拖一个QLineEdit进行编辑。代码部分不太多:ui.lineEdit->setPlaceholderText(QStringLiteral("E-mail")); # 设定行编辑框的占位字符ui.lineEdit->
阅读全文