- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 DirectShow禁用ActiveMovie窗口
DirectShow一般有一个IVideoWindow类型的windows用来预览画面,删除IVideoWindow后会出现ActiveMovie窗口,如果想用自己的窗口显示回调的摄像头数据,ActiveMovie无法关闭很碍事// IVideoWindow,用来显示预览视频 hr = pGraphBuilder->QueryInterface(IID_IVideoWindow, (LPVOID *)&pVideoWindow); if (FAILED(hr)) ...
2020-09-09 11:25:00
1223
转载 Qt高级——Qt信号槽机制源码解析
基于Qt4.8.6版本一、信号槽机制的原理1、信号槽简介信号槽是观察者模式的一种实现,特性如下:A、一个信号就是一个能够被观察的事件,或者至少是事件已经发生的一种通知;B、一个槽就是一个观察者,通常就是在被观察的对象发生改变的时候——也可以说是信号发出的时候——被调用的函数;C、信号与槽的连接,形成一种观察者-被观察者的关系;D、当事件或者状态发生改变的时候,信号就会被...
2019-05-07 18:09:25
756
原创 windows注册表设置程序开机自启动-QT
windows写注册表设置程序自启动的方式是一致的:在注册表"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"位置添加键值对,程序名做key,值为exe程序完整路径,下面以QT获取程序名和路径,写入注册码为例:#define REG_RUN "HKEY_CURRENT_USER\\Software\...
2019-05-07 10:43:51
1144
转载 QT connect最后一个参数
connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnecti...
2018-07-05 22:41:42
1438
原创 QT使用GDI和OpenGL绘图,相比QPainter绘图降低CPU占用率
QPainter在高频绘画的使用CPU占用较高,我们用以下方法解决1、使用GDI绘图,GDI因为是使用GPU绘图,会减少CPU占用GDI在QT中的使用方法:因为QT都是通过repaint和update事件触发paintEvent绘图,其他绘图会被覆盖所以需要以下方法实现GDI绘图一、在需要绘图的Widget构造函数写setAttribute(Qt::WA_PaintOnScreen, true);...
2018-03-06 17:55:08
20686
3
原创 QT 嵌入exe应用程序 并获取鼠标事件 mouse keyboard event
QT 嵌入第三方程序方法:QProcess *Process = new QProcess(this); //Process必须为指针,不然对象销毁时第三方exe会被关闭 Process->start(“Everything\\Everything.exe"); //启动exe if (Process->waitForStarted()) { S
2017-09-20 10:45:07
3475
2
转载 QT QPaintEvent update repaint 高帧率画图
Qt paintevent事件一.主要理解一下几个方法和属性:1.QWidget * QScrollView::viewport () const2.void QWidget::paintEvent ( QPaintEvent * ) [虚 保护]3.void QWidget::repaint ( int x, int y, int w, int h, bool e
2017-09-20 10:36:22
3629
转载 Qt Creator提示"Qt没有被正确安装,请运行make install"的解决办法
笔者最近使用Qt在开发一些小程序,觉得这个框架设计确实很好,使用了信号和槽解决了组件之间的通讯问题,可以说是基于C++语言上一个非常大的创新,大大提高了开发人员的编码效率,也使整个C++语言更加抽象。笔者很喜欢C++语言的简单、朴实、高效,不像.NET那样,即使是一个很小的程序也需要装个上百兆的运行库,对于很多场景来说.NET就是鸡肋...。一个快速、稳定、简单、高效的编程语言一定是今后开发者的最
2017-06-09 14:32:59
3423
原创 NSIS静默安装VC运行库插件
; ExecWait ‘vcredist_x86.exe’ # 一般的安装ExecWait ‘”vcredist_x86.exe” /q’ # silent install 静默安装; ExecWait ‘”vcredist_x86.exe” /q:a’ # silent install, display a progress dialog but requires no us
2017-02-15 16:00:44
6555
1
原创 Cmake编译QT,丢失ts文件信息问题
先写下如何用CMake队QT的国际化ts文件进行更新find_package(Qt5LinguistTools)SET(Lang_files ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/XXX.ts)QT5_CREATE_TRANSLATION(LangSrcs ${Lang_files})add_execut
2017-01-13 18:42:41
3821
原创 QlsitWidget列表设置交替背景色
所有继承自QAbstractItemView的QT类都可以通过setAlternatingRowColors(boolenable)设置列表项颜色交替变化。通过给stylesheet设置alternate-background-color: rgb(27, 27, 27);可以设置列表项交替时偶数行的颜色。而奇数行的颜色就是默认的列表颜色例如QListView{ back
2016-12-14 18:42:44
4374
1
原创 QLinedit 文本颜色设置
QLineEdit设置文本颜色:一:使用QPalette:m_pEdit = new QLineEdit();QPalette palette;palette.setColor(QPalette::Text, QColor(196, 196, 196));m_pEdit->setPalette(palette);二:使用 stylesheet两种
2016-12-14 10:58:01
10983
转载 unique_ptr and shared_ptr
Both of these classes are smart pointers, which means that they automatically (in most cases) will deallocate the object that they point at when that object can no longer be referenced. The difference
2016-10-19 11:36:25
420
转载 std::lock_guard and std::unique_lock
Difference between std::lock_guard and std::unique_lock
2016-10-19 11:24:38
602
原创 使用std::unique_ptr替换 函数域内普通指针
我需要一个地址char*作为参数,可能还用到了strncpy,在结束的时候deletechar *desip = new char[LENGTH];strncpy(desip , srcIp, LENGTH);........delete ip;不安全的地方在于new可能失败,delete可能被忘记。使用智能指针代替:std::unique_ptr de
2016-09-14 18:20:33
3805
1
原创 QLayout删除控件后重新布局问题
问题描述我使用的是FlowLayout,是从QLayout继承的类,删除layout里的控件之后虽然设置了margin,但是控件位置错乱,控件在靠最左的位置。之前使用的时候删除控件用的takeAt是没有问题的,代码如下:int index = m_pFlowlayout->indexOf(curWidget)QLayoutItem *currentItem = m_pFlow
2016-09-01 10:27:59
5581
原创 QT QComboBox的定制,包括下拉菜单
QCombox本身样式可以使用样式表定制,例如:QComboBox#pcdevicecombo{ border: 2px solid #323232; background: #0F0F0F; color: #C4C4C4;}QComboBox#pcdevicecombo::drop-down{ background: #323232;
2016-08-17 11:13:31
6332
原创 QT自定义控件重叠颜色异常
首先看错误效果无这是两个QListWidget的itemQListWidget 设置了alternatingRowColors(item 交替变换颜色)item是我自定义的widget控件,上面放了一些QLabel,其中文本QLabel我使用QPalette设置为灰色,但始终显示黑色。下面是修正效果图原因:先看QT Assistant 对于a
2016-07-27 12:17:19
3721
原创 QToolTip换行
QToolTip为所有widget提供 鼠标hover提示功能,直接通过setToolTip设置。如何实现换行呢。1:QToolTip支持rich text,是有意设置文本时中间加就可以实现换行。2:QToolTip中的rich text默认自动换行,除非指定。
2016-07-27 12:01:38
3139
原创 QT 动画透明度不起作用 QPropertyAnimation windowOpacity
QT 使用QPropertyAnimation 实现 控件的动画效果构造函数如下:QPropertyAnimation::QPropertyAnimation(QObject *target, constQByteArray &propertyName,QObject *parent = Q_NULLPTR)target是需要动画的控件。propertyName是控件在
2016-07-16 16:49:57
3471
3
原创 QT QPushButton 通过stylesheet 设置样式
QPushButton设置样式可以分两种方式:第一种通过qss文件写样式,例如QPushButton#noboder_button { border: 0px solid #FFFFFF;}通过setobjectname("noboder_button")设置。第二种:m_sendMessage->setStyleSheet("QPushButton{bo
2016-06-21 16:57:17
7091
原创 QT环境变量设置
1.在系统变量中,新建变量QTDIR,值为D:\Qt\Qt5.3.1\5.3\msvc2010_opengl ,如图所示 QTDIR的值为qt5.3.1的安装后所在的路径,如图所示 2.在系统变量中修改path变量,在path中增加D:\Qt\Qt5.3.1\5.3\msvc2010_opengl\bin; 如图所示 path中的新增的值为qt5.3.1的安装后qmake.
2016-05-27 16:00:23
23456
原创 Git裸仓库和非裸仓库
Git裸仓库创建 使用命令行:git init –bare 使用TortoiseGit:右键菜单git creat repo here,选择Make it Bare 裸仓库可以直接作为服务器仓库供各开发者push、pull数据,实现数据共享和同步,不保存文件,只保存历史提交的版本信息 非裸仓库创建:git init使用TortoiseGit:右键菜单git creat repo h
2016-05-27 13:00:56
9011
原创 重载、覆盖和隐藏区别?
类成员函数的重载、覆盖和隐藏区别?答案:a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。 c.“隐藏”是
2016-05-13 16:09:27
417
转载 更简单的非递归遍历二叉树的方法
解决二叉树的很多问题的方案都是基于对二叉树的遍历。遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了。其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事。正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章。可是大家需要的真是那些非递归遍历代码和讲述吗?代码早在学数据结构时就看懂了,理解了,可为什么我们一而再再而三地忘记非递归遍历方法,却始终记住了递归遍历方
2016-05-05 17:57:33
408
原创 内存对齐
结构体数据对齐 结构体数据对齐,是指结构体内的各个数据对齐。在结构体中的第一个成员的首地址等于整个结构体的变量的首地址,而后的成员的地址随着它声明的顺序和实际占用的字节数递增。为了总的结构体大小对齐,会在结构体中插入一些没有实际意思的字符来填充(padding)结构体。 在结构体中,成员数据对齐满足以下规则: 1、结构体中的第一个成员的首地址也
2016-05-05 11:37:13
425
原创 delete和delete[]陷阱
c++中对new申请的内存的释放方式有delete和delete[]两种方式,到底这两者有什么区别呢? delete ptr 代表用来释放内存,且只用来释放ptr指向的内存。 delete[] rg 用来释放rg指向的内存,!!还逐一调用数组中每个对象的destructor!!(1) 对于基本数据类型;delete和delete[]作用相同,原因在
2016-04-29 12:32:16
598
原创 vector和map迭代中erase的使用陷阱
vector和map都不能将it++写在for循环中,而在循环体内erase(it).可以把it++卸载for循环中进行遍历操作,但erase操作后it发生了变化,如果for循环执行了++操作,会发生错误。vector循环删除的时候,erase(it)会返回下一个迭代器的地址,保险的做法是赋值给it 即 it= erase(it),这时候for循环的++操作就会跳到删除
2016-04-29 12:25:49
876
原创 以一道union面试题说明大端小端和内存高位低位
首先我们来看一道题:union number{int value;char str[2];};number test;test.value = 0;test.str[0] = 10;test.str[1] = 1;printf("%d", test.value);请问输出是多少?一步步来求解,union是共享内存的,所以当前test占用4个字节。1:
2016-04-28 18:08:51
2465
转载 二进制如何转十进制,十进制如何转二进制
转载自:http://jingyan.baidu.com/article/597a0643614568312b5243c0.html
2016-04-28 10:40:14
433
转载 C++的4种类型转换关键字及其特点
C语言中的强制类型转换可以随意的转换我们想要的类型了,格式如下(类型) 变量名; 为什么c++还要引入新的4种类型转换呢? 这是因为新的类型转换控制符可以很好的控制类型转换的过程,允许控制各种类型不同的转换. 还有一点好处是C++的类型转换控制符能告诉程序员或读者我们这个转换的目的是什么,我们 只要看一下代码的类型转换控制符,就能明白我们想要达到什么样的目的
2016-04-15 11:03:50
717
转载 C,C++中使用可变参数
可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等。可变参数是实现printf(),sprintf()等函数的关键之处,也可以用可变参数来对任意数量的数据进行求和,求平均值带来方便(不然就用数组或每种写个重载)。在C#中有专门的关键字parame,但在C,C++并没有类似的语法,不过幸好提供这方面的处理函数,本文将重点
2016-04-14 11:12:57
372
转载 C++类中的static数据成员,static成员函数
C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联!这句话可能比较拗口,其实可以这么理解:每个static数据成员可以看成是类的一个对象,而不与该类定义的对象有任何关系!下面我们就来具体
2016-04-13 12:19:44
366
转载 基于Firebreath的浏览器插件制作
1. 应用场景 在web端需要通过远程桌面服务调用特定服务器上的应用程序,使用户在桌面点击应用程序的图标之后就可以自动启动对应的服务器上的软件使用,为了达到这种功能,要预先生成rdp文件,然后通过mstsc命令或者其它自己开发的应用程序来调用该rdp文件就可以启动远程应用程序。项目中采用的是自己开发的应用程序来调用该rdp文件,采用到JavaScript调用插件中的函数来实现这一功能
2016-04-13 12:15:48
511
转载 详解虚函数表virtual table
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过
2016-03-28 10:42:55
784
原创 cef3 加载flash ppapi插件
CEF(Chromium Embedded Framework)是谷歌浏览器框架,可以快速开发基于chromium的浏览器cef开发后的浏览器需要加载flash插件才能支持flash播放,之前版本可以加载NPAPI,新版chromium放弃了NPAPI的原生支持,在此我们介绍PPAPI加载flash的方式。网上关于PPAPI加载方式大多是下面的流程启动的时候加个命令行
2016-01-19 13:48:24
12323
1
转载 How to Check for Newer Versions of Stored Pages in a Registry
原地址http://www.ehow.com/how_7728247_check-versions-stored-pages-registry.htmlRegistry EditorPress the "Windows" and "R" keys simultaneously. This opens the "Run" box.Type "Regedit"
2015-08-11 13:26:22
586
原创 RTTI symbol not found for class 'QWidget'
谢绝转载QT 编程中,同一个QSpacerItem添加到两个QHBoxLayout的时候,主窗体析构会报错RTTI symbol not found for class 'QWidget'。
2015-06-16 16:31:32
5313
转载 Activity之间通信
原文地址http://www.cnblogs.com/linjiqin/archive/2011/06/03/2071196.html。Activity之间通信在一个Activity中可以使用系统提供的startActivity(Intent intent)方法打开新的Activity,在打开新的Activity前,你可以决定是否为新的Activity传递参数。
2015-05-25 10:01:46
413
原创 注册表部署firefox的NPAPI插件
这里只讲插件如何通过注册表部署到firefox浏览器,不讲npapi插件的生成(这部分会抽出时间另写一篇文章)假如已经生成了NPAPI插件,名字我们家设为npTest.dll。一:要写入的注册表位置32位系统:HKEY_LOCAL_MACHINE\SOFTWARE\MozillaPlugins64位系统:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432
2015-05-15 17:20:05
3622
PPT格式说明
2013-05-09
Office编程技术--理解对象模型
2013-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人