<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hai7song的专栏]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/hai7song</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; hai7song]]></copyright><item><title><![CDATA[Qml-展开收起面板]]></title><link>https://blog.csdn.net/hai7song/article/details/107162341</link><guid>https://blog.csdn.net/hai7song/article/details/107162341</guid><author>hai7song</author><pubDate>Mon, 06 Jul 2020 17:05:43 +0800</pubDate><description><![CDATA[搜了一下网上没有类似功能的UI，实现了一个给大家参考。

AccordionElement.qml 由一个layout组成，layout里包含标题和内容组件，可以在外部实现内容组件进行替换，如isOpen为false，内容组件将收缩起来，反之则展开。


import QtQuick 2.5
import QtQuick.Layouts 1.1

ColumnLayout {
    id: rootElement
    property bool isOpen: false
    property s]]></description><category></category></item><item><title><![CDATA[C++11: 线程的暂停和继续和停止]]></title><link>https://blog.csdn.net/hai7song/article/details/104943975</link><guid>https://blog.csdn.net/hai7song/article/details/104943975</guid><author>hai7song</author><pubDate>Wed, 18 Mar 2020 14:33:43 +0800</pubDate><description><![CDATA[当我们执行一个如图片处理视频处理等费时费CPU的操作时，很多时候是将其移到一个线程，并监测其进度，如果这个时候我们需要提供                             暂停、恢复、停止的功能，本文就用C++11来实现其功能。
C++11 提供了线程（std::thead，std::async等）以及线程安全等控制（如std::unique_lock std::lock_guard, s...]]></description><category></category></item><item><title><![CDATA[【翻译】复制或不复制？参数在信号-槽中的传递]]></title><link>https://blog.csdn.net/hai7song/article/details/104776387</link><guid>https://blog.csdn.net/hai7song/article/details/104776387</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:57:37 +0800</pubDate><description><![CDATA[Qt的信号-槽在触发的时候，信号中的参数会被复制多少次？如果信号的参数是常引用且接收信号的槽是常引用呢？信号-槽连接的类型是队列或者直接方式有什么不一样呢，如果信号的参数是值传递又会有什么不一样？
Qt的文档并有没有对这个问题进行描述，在stackoverflow有详细的讨论，但遗憾的是只让读者去选择正确的答案。所以，我们详细的系统的看一下参数在信号-槽是如何传递的。

环境配置：
在我们的实验中...]]></description><category></category></item><item><title><![CDATA[QtQuick实现无边框窗口的拉伸，拖拽和自定义标题栏]]></title><link>https://blog.csdn.net/hai7song/article/details/104776375</link><guid>https://blog.csdn.net/hai7song/article/details/104776375</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:56:25 +0800</pubDate><description><![CDATA[由于Qt的原生窗口带有的标题栏无法定制，然而通常情况下我们需要自定义窗体上的关闭、最小化等按钮、背景，甚至需要不需要标题栏。在QtQuick实现去除标题栏，也即无边框很简单，只需要在Qml-Window中设置：
flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint

但是这个时候的窗体不能拖拽，也不能在窗体的...]]></description><category></category></item><item><title><![CDATA[QtQuick音频播放]]></title><link>https://blog.csdn.net/hai7song/article/details/104776342</link><guid>https://blog.csdn.net/hai7song/article/details/104776342</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:55:27 +0800</pubDate><description><![CDATA[上一篇文章讲到了音频采集，既然有了采集，也就需要将音频数据进行播放，当然也可以读取音频文件或接收网络音频数据进行播放，这个时候就要用到QAudioInput的平行类QAudioOutput，QAudioOuput的使用和QAudioInput差不多，同样需要设置音频的参数，指定播放的设备（QAudioDeviceInfo），指定播放的数据缓冲（QIODevice）
下面说一下一些使用的差别

设置...]]></description><category></category></item><item><title><![CDATA[QtQuick音频采集]]></title><link>https://blog.csdn.net/hai7song/article/details/104776329</link><guid>https://blog.csdn.net/hai7song/article/details/104776329</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:54:29 +0800</pubDate><description><![CDATA[QT中有一个强大的音频处理的库，可以设置采集的参数，指定采集的设备等，这个强大的类就是QAudioInput，下面介绍如何通过这个类实现音频的设置，采集和保存

QAudioInput属于multimedia模块，故我们在pro文件需要  QT  += multimedia
采集音频的参数设置通过QAudioFormat 来设置，告诉计算机应该以什么样的方式进行数据采集，如采样率、声道数量、编码方...]]></description><category></category></item><item><title><![CDATA[QtQuick中集成OSG渲染]]></title><link>https://blog.csdn.net/hai7song/article/details/104776127</link><guid>https://blog.csdn.net/hai7song/article/details/104776127</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:48:55 +0800</pubDate><description><![CDATA[从目前网上介绍OSG与Qml集成有两种方式：

在[QtQuick2OSGItem](https://bitbucket.org/leon_manukyan/qtquick2osgitem/src/master/sampleapp/)通过继承抽象类__QQuickFramebufferObject::Renderer__来重写渲染接口，在__QQuickFramebufferObject__渲染成...]]></description><category></category></item><item><title><![CDATA[QtQuick-TreeView如何拖拽或移动item到其他item]]></title><link>https://blog.csdn.net/hai7song/article/details/104775922</link><guid>https://blog.csdn.net/hai7song/article/details/104775922</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:41:03 +0800</pubDate><description><![CDATA[由于qml中的TreeView属于QtQuick1.x，目前也不再进行feature上的扩展，相关的资料也不多，导致想在上面实现一些常见的操作也变得困难，比如本次想在TreeView实现从移动item到其他item上。
我们之前的文章在qml-TreeView自定义模型里的数据讲解了如何在TreeView传递自定义数据类型，本次文章仍然在这个基础上实现。
import QtQuick 2.7
im...]]></description><category></category></item><item><title><![CDATA[Qt工程生成MiniDump文件]]></title><link>https://blog.csdn.net/hai7song/article/details/104775467</link><guid>https://blog.csdn.net/hai7song/article/details/104775467</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:25:11 +0800</pubDate><description><![CDATA[关于Dump的文件介绍在这里，今天要介绍的是如何在Qt工程生成Dump文件。


首先我们在Qt的pro文件（工程配置文件）要取消优化，并加入调试信息，如下：

#加入调试信息
QMAKE_CFLAGS_RELEASE += -g
QMAKE_CXXFLAGS_RELEASE += -g
#禁止优化
QMAKE_CFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEA...]]></description><category></category></item><item><title><![CDATA[QtQuick 麦克风采集生成波形图（二）]]></title><link>https://blog.csdn.net/hai7song/article/details/104775313</link><guid>https://blog.csdn.net/hai7song/article/details/104775313</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:22:03 +0800</pubDate><description><![CDATA[在这篇文章麦克风采集生成波形图描述了如何使用Qml中的Chart组件来绘制波形图，但是有时候我们需要绘制一些额外的信息，比如横轴和纵轴也要能够自定义，这个时候在qml-chart中就比较难定制了，我们可以通过继承Qt中的QQuickPaintedItem实现重绘事件，再将继承类注册到qml中，这样我们就能够在C++实现将录音的数据绘制出来

首先我们需要继承QQuickPaintedItem这个类...]]></description><category></category></item><item><title><![CDATA[ffmpeg: 从视频里提取视频帧，并保存为图片文件]]></title><link>https://blog.csdn.net/hai7song/article/details/104775229</link><guid>https://blog.csdn.net/hai7song/article/details/104775229</guid><author>hai7song</author><pubDate>Tue, 10 Mar 2020 15:17:28 +0800</pubDate><description><![CDATA[用ffmpeg处理视频时，有时需要从视频里提取某个时间的一帧视频数据，这时需要用到ffmpeg的一个关键函数，av_seek_frame。
av_seek_frame原型如下：

int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)｛｝
参数1: s操作上下文；
参数2: str...]]></description><category></category></item><item><title><![CDATA[QtQuick：C++传递自定义类型作为参数到Qml]]></title><link>https://blog.csdn.net/hai7song/article/details/104756931</link><guid>https://blog.csdn.net/hai7song/article/details/104756931</guid><author>hai7song</author><pubDate>Mon, 09 Mar 2020 17:28:22 +0800</pubDate><description><![CDATA[在Qt毫无疑问的是可以将自定义类型（struct/class）作为数据类型在C++类之间传递，但是从C++传递自定义类型并且暴露属性给Qml就不行了，因为C++与Qml之间的信号传递只支持基本类型，具体可以参考Data Type Conversion Between QML and C++
具体参考如下代码（带注释的是注意事项，不支持从QObject派生，并不支持NOTIFY属性）


cla...]]></description><category></category></item><item><title><![CDATA[基于Qt的异步拷贝文件]]></title><link>https://blog.csdn.net/hai7song/article/details/104756774</link><guid>https://blog.csdn.net/hai7song/article/details/104756774</guid><author>hai7song</author><pubDate>Mon, 09 Mar 2020 17:23:00 +0800</pubDate><description><![CDATA[由于Qt的中QFile::copy是个原子操作，所以并不支持拷贝文件进度。所以用QThread实现了在线程中拷贝文件，并能实时更新文件进度，主要代码封装在FileCopyer类里
FileCopyer.h
#pragma once

#include &lt;QtCore/qstring.h&gt;
#include &lt;QtCore/qobject.h&gt;
#include &lt;Qt...]]></description><category></category></item><item><title><![CDATA[QtQuick-TreeView使用自定义模型里的数据]]></title><link>https://blog.csdn.net/hai7song/article/details/104756005</link><guid>https://blog.csdn.net/hai7song/article/details/104756005</guid><author>hai7song</author><pubDate>Mon, 09 Mar 2020 16:58:35 +0800</pubDate><description><![CDATA[######我们在使用Qml的TreeView时，默认节点的数据是不能修改，即如果我们使用代理来自定义节点时，使用的styleData.value 默认是string，很多时候我们需要向代理传递更多的数据，这时候我们就需要一个自定义数据结构，然后在QStandardItem将数据结构“嵌”进去。

首先我们先定义个数据结构，使用type和size两个属性

class CustomType : p...]]></description><category></category></item><item><title><![CDATA[QtQuick 麦克风采集生成波形图（一）]]></title><link>https://blog.csdn.net/hai7song/article/details/104755898</link><guid>https://blog.csdn.net/hai7song/article/details/104755898</guid><author>hai7song</author><pubDate>Mon, 09 Mar 2020 16:53:38 +0800</pubDate><description><![CDATA[本文主要介绍如何从麦克风进行音频采集，并使用qml-charts模块进行显示波形图显示



首先关于使用电脑的麦克风设备进行音频采集到内存，可以参考QtQuick音频采集




继承抽象类QIODevice，并重写readData()和writeData()两个方法，readData是从外部读取数据，暂且不用管它，我们最主要的是重写writeData()方法，将数据写入到qml中的ChartV...]]></description><category></category></item><item><title><![CDATA[在VS2012编译LibGizmo for 64bit]]></title><link>https://blog.csdn.net/hai7song/article/details/45649615</link><guid>https://blog.csdn.net/hai7song/article/details/45649615</guid><author>hai7song</author><pubDate>Mon, 11 May 2015 21:44:20 +0800</pubDate><description><![CDATA[在VS2012编译LibGizmo for 64bitLibGizmo 是一个第三方、小型3D操控器库，可以实现类同3dsmax的移动、平移、缩放的效果以及显示操控柄 
作者博客1.从Github下载，打开LibGizmo.sln 出现 
分别点击确定和更新。2.将项目从Win32改为 X64，编译出现1>C:\Program Files (x86)\Microsoft Visual Studio]]></description><category></category></item><item><title><![CDATA[Native Camera和OpenGL ES的混合使用]]></title><link>https://blog.csdn.net/hai7song/article/details/41931949</link><guid>https://blog.csdn.net/hai7song/article/details/41931949</guid><author>hai7song</author><pubDate>Sun, 14 Dec 2014 22:59:39 +0800</pubDate><description><![CDATA[由于android各个版本中相机实现的差异很大，所以google并没有提供相机的原生api。网上在JNI处理Camera的Preview Data，大多是用SurfaceView来实能够处理将Camera的Preview传递到JNI然后在进行处理，这样导致一个问题就是如果再将处理完的数据再显示，就必须增加多一个SurfaceView或者ImageView控件，对系统资源消耗比较大，而且效率并不比J]]></description><category></category></item><item><title><![CDATA[osg for android (四)  osgText显示文字以及显示中文的问题]]></title><link>https://blog.csdn.net/hai7song/article/details/41128177</link><guid>https://blog.csdn.net/hai7song/article/details/41128177</guid><author>hai7song</author><pubDate>Fri, 14 Nov 2014 22:56:22 +0800</pubDate><description><![CDATA[前提：很悲催的是]]></description><category></category></item><item><title><![CDATA[osg for android (三) Windows 下编译]]></title><link>https://blog.csdn.net/hai7song/article/details/41094685</link><guid>https://blog.csdn.net/hai7song/article/details/41094685</guid><author>hai7song</author><pubDate>Thu, 13 Nov 2014 23:36:03 +0800</pubDate><description><![CDATA[之前编译的版本是osg3.0.1，发现使用osgText不能够正确显示文字，google之发觉是osg的一个bug，具体请看这里，想到这个版本已经是2012年的版本，故重新编译一个最新的版本(3.2.1)，在最新的版本应该有对这个bug进行修复，也因此记录下在windows编译osg for android的过程。

       1.准备：
       (1) 下载安装cygwin，把其]]></description><category></category></item><item><title><![CDATA[osg for android (二) 几何物体的颜色显示以及纹理贴图]]></title><link>https://blog.csdn.net/hai7song/article/details/40598479</link><guid>https://blog.csdn.net/hai7song/article/details/40598479</guid><author>hai7song</author><pubDate>Wed, 29 Oct 2014 23:54:44 +0800</pubDate><description><![CDATA[上篇的代码仅仅是将图形显示，并通过gl_FragColor=vec4(0.4,0.4,0.8,1.0)，简单粗暴的上色，其实在createNode()中创建四边形的时候有创建了几何体的纹理坐标、法线坐标和颜色坐标。下面分别讲颜色的加载和纹理的加载。
      1.颜色的加载
       颜色的加载有两种方式，一种是通过vertext shader的内建变量gl_Color直接来加载，另外一]]></description><category></category></item></channel></rss>