
Qt
很菜但努力
C++爱好者,技术控~~~
展开
-
Qt 绘制电池
实现如下功能: * 1. 可设置电池电量,动态切换电池电量变化 * 2. 可设置电池电量警戒值 * 3. 可设置电池电量正常颜色和报警颜色 * 4. 可设置边框渐变颜色 * 5. 可设置电量变化时每次移动的步长 * 6. 可设置边框圆角角度/背景进度圆角角度/头部圆角角度#ifndef BATTERY_H#define BATTERY_H#include <QWidget>class Battery : public QWidget{ Q_OBJECT原创 2021-02-22 14:39:24 · 802 阅读 · 0 评论 -
qt mac窗体无边框后问题解决方案
文件后后缀名改为.mm设置无边框不使用qt自带的方式:void setWindowFrameless(QWidget *widget, bool bRound){ NSView* view = (NSView*)widget->winId(); NSWindow* wndd = [view window]; if(bRound) { wndd.titlebarAppearsTransparent = YES; wndd.tit...原创 2021-02-22 14:10:15 · 1288 阅读 · 4 评论 -
Qt实现截图之三 截图裁剪框实现方案2 绘制方式
前面介绍了一种裁剪框的实现方案详见Qt实现截图之二 ,本节再介绍一种实现方案。分层依旧两层,改变的是裁剪层,差别在于只需要一个裁剪窗口也就是去掉前面的top,right, left,bottom,只留下mid窗体用于高亮显示裁剪区域。布局如下:void MaskFrameBase::setup(){ this->setMouseTracking(true); // this->setObjectName("shtcenterframe"); this-原创 2020-12-25 11:37:16 · 891 阅读 · 0 评论 -
Qt实现截图之二 截图裁剪框实现方案1 窗口组合方式
截图相关介绍参考Qt实现截图之一整个截图分为两层,一层为截图显示区,一层为裁剪选着层,裁剪选择层蒙在截图显示区之上。本节介绍一种方案实现裁剪框。裁剪层分为5个区域,上下左右和中间,分别代表5个QWidget, 中间区域即为需要裁剪的区域-高亮区域,没有截图时此区域不存在。1.布局top, left,right, bottom 是个窗体均设置半透明颜色,mid是全透明效果就是裁剪区域void MaskFrameBase::setup(){ this->set.原创 2020-12-25 11:23:27 · 1458 阅读 · 1 评论 -
Qt实现截图之一 截图
最近项目需要使用qt实现截图功能,再次记录一下,希望对您有所帮助,qt我是用的是5.9.9版本。1.截图qt截图推荐使用QScreen来实现截图,使用grab这种方式只能截窗体且窗体如果是opengl窗体或者视频窗体无法获取数据。1.截主屏幕截主屏幕代码相对简单 QScreen* screen = QApplication::primaryScreen(); QPixmap pixmap = screen->grabWindow(QApplication::deskt原创 2020-12-25 10:53:12 · 4947 阅读 · 0 评论 -
Qt 集成miniblink浏览器库之5 支持独立窗口和子窗口
前面使用GDI绘制解决了集成到Qt的系统冲突和QWebEngineView的冲突,但仅支持作为qt的子窗体,现在将其修改为支持独立窗口的创建。首先判断create接口传入的父窗口句柄是否是空,为空表示创建一个独立窗口,代码如下: _hWnd = CreateWindow(wkeWebViewClassName, 0, WS_CAPTION | WS_VISIBLE | WS_BORDER | WS_MINIMIZEBOX |...原创 2020-12-25 10:27:19 · 1321 阅读 · 1 评论 -
Qt 集成miniblink浏览器库之4 解决兼容性问题
之前介绍了如何miniblink集成到qt,采用wkeCreateWebWindow来创建一个浏览器窗口,wkeCreateWebWindow有三种方式typedef enum _wkeWindowType { WKE_WINDOW_TYPE_POPUP, WKE_WINDOW_TYPE_TRANSPARENT, WKE_WINDOW_TYPE_CONTROL} wkeWindowType;WKE_WINDOW_TYPE_POPUP 创建一个弹出式窗体,模态窗体。W...原创 2020-12-02 17:54:49 · 1715 阅读 · 4 评论 -
菜鸟学ffmpeg音视频技术之二实现命令录制(暂停,组合)
前一节已经实现了录制,只能录制一段视频,实际运用中我们可能会暂停,然后接着录制最终生成一条完整的视频。我们在使用命令行操作ffmpeg时组合各段视频的命令如下:ffmpeg -f conccat -safe 0 -iconccatfile -c copy dirfile所以我的方法是暂停录制后生成一条临时视频,并把临时视频的文件名保存在conccatfile里面。重新开始录制又重新录制一条临时视频,这样如果一直反复暂停录制开始录制,会生成多个临时文件。停止录制时将这些视频组合成一条视频,从而完.原创 2020-11-20 14:13:01 · 1510 阅读 · 0 评论 -
菜鸟学ffmpeg音视频技术之一实现命令录制
ffmpeg就不解释了,太多资料了,著名的开源做音视频的库学些录制的动力是目前所在公司使用OBS录屏存在一些问题,录制窗口有些显卡会黑屏,录制屏幕会把电脑的其他软件也会录制进去,理想的录制方式是组合录制方式,把想录制的录制进去,不像录制的去掉。比如一个软件中有多个窗口,只想录制其中一些。希望后续能成功立一个flag。ffmpeg使用的方式有两种,一种是命令模式,一种是api模式,要实现我想要录制应该是api模式能实现,这里我先使用api实现录制,了解一下录制原理。为了方便依旧使用qt来实现。.原创 2020-11-16 18:17:58 · 839 阅读 · 0 评论 -
Qt 集成miniblink浏览器库之3 C++ js相互调用
上一节已经将miniblink集成到qt,实现了浏览器得基本调用接口,这一节介绍如何实现通信。1.C++调用jsminiblink接口wkeRunJSW可以实现C++调用js例如我们在js中写一个绑定到window的函数openDialog就可以这样调用wkeRunJSW("window.openDialog()");这跟cef,QtWebEngine完全一样2.js调用C++首先我们写一个测试的html如下:<html><head>..原创 2020-11-13 15:18:47 · 1747 阅读 · 0 评论 -
Qt 集成miniblink浏览器库之2封装
前面一节已经介绍了如何编译miniblink库以及如何在qt下使用,但是创立的是个独立窗体,应用中我们经常用到的是作为一个子窗体嵌入到其他窗体之中,类似QWebengnieView,本节将实现这个功能。首先参考前一节将需要的库文件,头文件引入工程。1.创建一个类QMiniblinkWebView继承自QWidget2.初始化initialize接口由于miniblink使用需要先初始化,这里设计在构造函数中处理这个问题,多个QMiniblinkWebView只需要初始化一次,所以这里定义两个原创 2020-11-06 14:44:21 · 1781 阅读 · 4 评论 -
浅谈VC中使用Qt库之二
前面我们在vc中成功使用了Qt原生控件QMessageBox, 如何使用非原生控件呢,例如我们从QDialog继承一个类,这里qmake没起到元对象的转化功能,怎么办呢?我们接着在前一章的工程中开发。1.手动编写一个EdbParamaUi 继承QDialog#include #include class EdbParamaUi : public QDialog{原创 2016-09-06 17:31:27 · 1715 阅读 · 0 评论 -
浅谈VC中使用Qt库之三
前面我们讲到在VC中直接使用Qt,这种方法将Qt和VC代码混在一起,感觉不伦不类,更好的方法是将这些界面封装在库中,vc通过加载dll的方式来使用。1.首先创建一个win32 项目-》选择动态库-》完成将前面工程的EdbParamaUi.h EdbParamaUi.cpp moc_EdbParamaUi.cpp拷贝到该工程中并加入工程。2. 编写导出函数原创 2016-09-06 17:57:46 · 1462 阅读 · 0 评论 -
QISG学习之-在图层上画图
研究过源码的人都知道 QGIS对于在地图上的功能操作都是通过QgsMapTool来管理的,有一篇博客有详细讲解:http://blog.youkuaiyun.com/deirjie/article/details/50878670所以要实现画图也很简单了。首先继承QgsMapTool,这里提供了各种坐标转换,我们当然非常需要。#ifndef MEASURETOOL_H原创 2017-07-28 11:24:48 · 2132 阅读 · 0 评论 -
Qt显示PDF之四pdfium封装
如果你已经按照前面的步骤成功生成了库,那么恭喜你。如果没有也不要气馁 ,我后面会放送编译好的库。我们可以看一下pdfium的pdfium\build\Debug\lib目录和pdfium\build\Debug\,可以看到其实就一个dll文件和一堆lib。如果使用呢可以参考pdfium\samples目录下的例子程序。下面我对其进行封装:首先建立一个win32 dll工程PDFIumR原创 2017-09-01 16:01:03 · 4359 阅读 · 2 评论 -
Qt显示PDF之三 pdfium编译
其实pdfium的编译步骤网上已经说的很明白了,不过这里还是列出其步骤:1.下载vs2013,python2.7 SVN并安装2. V8 JavaScript引擎的下载: svn co http://v8.googlecode.com/svn/trunk v83. ICU下载,V8又依赖于ICU库svn co https://src.chromium.org/chrome/原创 2017-09-01 15:45:23 · 4424 阅读 · 2 评论 -
Qt显示PDF系列之一
Qt 只提供了对pdf文件的读写接口,显示接口并没有。如下实现显示。据我所知有以下几种方法:1.将pdf显示为web页面,需要用到类似PDFObject.js类 该类实现了网页对PDF的解析,然后Qt通过浏览器控件进行加载。这里要求html编写者提供一个传入文件路径的接口,Qt通runJacaScritp接口调用传入。这种方法叫简单,而且效果还不错。2.通过com组件加载Qt 提供了Q原创 2017-09-01 15:09:50 · 11452 阅读 · 2 评论 -
Qt 在Mac下无边框后无法最大化和最小化解决方案
Qt 5.0以上mac版本一致存在这个bug,网上也有解决方案,一个是修改Qt源码重新编译,这个比较费事,另一个是将文件改为.mm后缀,使用oc代码: NSView* view = (NSView*)this->winId(); NSWindow* wnd = [view window]; [wnd miniaturize:nil];这句代码好像在qt5.2中可以解决,然后我测试了之后的所有...原创 2018-03-28 10:38:25 · 6587 阅读 · 9 评论 -
浅谈VC中使用Qt库之一
Qt作为一款夸平台的UI库 已经在各个领域取得了成功,它的简单,便捷是快速开发界面的首选,MFC, C#等等在我看来都没有它方便。假如你在一个VC项目中你想使用Qt怎么办呢,其实网上有很多使用qtwinmigrate来实现这样的功能,但是qt更新版本是不兼容的,使得只要Qt有升级qtwinmigrate也得跟着升级,遗憾的是qtwinmigrate已经在几年前终止了升级,只能在5.0以下使用,不过原创 2016-09-06 17:02:26 · 6559 阅读 · 2 评论