QT
最爱吹吹风
觉悟
展开
-
macOS上QT打开麦克风和摄像头的权限问题
同样的代码在Windows上可以轻松操作麦克风和摄像头,特别是用QT这种跨平台的框架。如果是之前的早期5.x版本的QTCreator因为使用的是qmake构建系统,估计可以帮忙生成,但是从6.x以后QTCreator已经默认使用CMake了。问题是CMake不会帮忙做太多工作,如果需要用到一些平台上的权限,就需要手动创建Info.plist文件,这当然跟XCode的便利性没法比。做好上面的操作,CMake就可以根据Info.plist.in中的配置生成对应的Info.plist文件,并且和应用打包起来。原创 2024-04-01 15:49:16 · 713 阅读 · 0 评论 -
QT-QQuick开发心得
1.qmlRegisterType 可以注册类型到qml中使用的,尽量注册qml类型,在qml中生成对象由qmlengine管理生命周期。但是这样也有缺陷,就是在其他qml中访问不方便 qmlRegisterUncreatableType<Tester>("Logic", 1, 0, "Tester", ""); qmlRegisterType<AudioTesterList>("Logic", 1, 0, "AudioTesterList");2. rootCon.原创 2021-08-27 15:21:04 · 1208 阅读 · 0 评论 -
QQuick-自绘
QQuick提供了丰富的控件,搭配qml很容易就可以搭配出一套丝滑的UI界面。但是在有些场景下无论是出于效率还是现有控件的局限都需要进行自绘才能实现自身的需求。原创 2023-04-17 15:13:05 · 1238 阅读 · 1 评论 -
QT-qrc资源管理
QT中对图片、qml资源都是通过qrc来管理的,本质上就是将这些资源通过二进制的方式,放入一个静态数据中,在编译时一块编译到二进制中。这块有两个疑惑,通过qrc加载对应文件时怎么找到对应的二进制数组 不同模块中的二进制资源如果相互引用的问题第一个问题,没有看过源码,但是大致猜测,应该是QT框架维护了一套qrc路径与二进制数组的映射关系,可以在使用qrc资源的地方替换为实际的资源二进制数据第二个是因为QT在编译qrc时不仅生成了二进制静态数组,还生成了初始化资源的接口,同时有一个全局变量,在全局.原创 2021-05-24 15:13:54 · 697 阅读 · 0 评论 -
QQuick-C++操作QML对象
QT官方推荐QML只作为UI编写和UI简单逻辑,C++用来做业务逻辑的方式来分离界面和逻辑。QML中操作C++类或者对象Doc中非常详细,对于C++操作QML有很多隐晦的地方。QML:main.qmlimport QtQuick 2.14import QtQuick.Window 2.14Window { visible: true width: 640 height: 480 title: qsTr("Hello World") Rectangle{原创 2021-04-16 21:29:44 · 1115 阅读 · 0 评论 -
QQuick入门简介
QQuick是QT最新推出的界面框架,也是目前主推的方式,widgets框架已经不再有新的更新,区别于QWidget框架,QQuick是基于OpenGL,Metal,Vulcan这些底层设施之上的,比QWidget无论从效果还是效率上会有更大的提高。QQuick是有独立渲染线程的,所以在很大程度上减小了主线程的压力,主线程只需要负责界面交互,渲染线程负责绘制到底层。但是不能说完全没有劣势,在实际应用中,QQuick的问题还是要比QWidget多的,比如说底层显卡驱动的支持问题,有些显卡对OpenGL的支原创 2021-02-22 10:43:29 · 8286 阅读 · 0 评论 -
C++文件\文件夹压缩-QuaZip
打包压缩文件、文件夹是个比较常见的操作,之前在代码中使用的一直是7z.exe,利用命令行进行打包。现在发现了一个更好的选择,可以跟项目有更高的集成度,QuaZip.QuaZip git:https://github.com/stachenov/quazip.git直接看这个项目,这个项目是用CMake来组织的,所以直接用CMake将项目转为VS工程,因为依赖的了zlib,所以提前准备好zlibZlib :http://www.zlib.net/zlib没有托管在git上,但是主页直接提供了.原创 2020-12-18 14:35:28 · 676 阅读 · 1 评论 -
QML- Image在布局中大小不能适应
在实际应用Image的过程中,发现加入布局中以后Image的缩放就会有问题,即使指定了fillMode:Image.PreserveAspectFit也会发现图片显示大小虽然得到了调整,但是实际在布局中占用的宽度并没有调整Rectangle{ width: 800 height: 600 color: "white" RowLayout{ Image { id:first Layout.preferr原创 2020-06-12 20:41:38 · 2805 阅读 · 0 评论 -
QML调试配置
QTCreator可以方便的调试qml代码,方法也很简便,就是在工程配置的build中配置 Enable QML debugging and profiling,一般默认的QQuick应用会勾选。如果为Widget应用要用QQuickWidget需要调试qml,还需要在pro文件的QT配置中加入qml模块才可以调试QT += widgets qml...原创 2020-06-02 19:49:54 · 1476 阅读 · 0 评论 -
QML中的Layout和Anchor
相较于QWidget,QQuick中使用QML来写界面,开发效率和代码结构都有了明显的进步,而且新版本对QQuick的支持也越来越完备,无论效率,还是界面效果都要优于原有的Widget架构。QML中界面排布提供了两种方式Layout和Anchor,两个形式结合起来非常方便,之前Widget中只提供了Layout的支持,对于有些特殊分布非常不便。Layout(布局): 适用于元素并列排布的场景,元素之间没有重叠关系,大的方面界面的主要元素的分布都可以用RowLayout和ColumnLayout规划.原创 2020-05-21 20:35:32 · 2680 阅读 · 0 评论 -
QT安装指引
QTCreator是QT自己开发的IDE,安装IDE之后还需要安装sdk:QT下载地址:http://download.qt.io/1.2.原创 2019-11-23 11:29:41 · 159 阅读 · 0 评论 -
RPC进程间通信的一种实现
客户端项目中不可避免的要用到进程间的通信,方式也多种多样。单就开发而言,RPC这种模式最方便来做进程间通信的手段。因为类似于本地函数的调用。实现这个机制需要满足以下内容:接口定义。一个组件是否方便使用,主要是看接口的设计是否简洁合理。 满足本地函数调用的特点:函数未执行完不返回,只需要函数签名和函数参数这些信息。 是否支持一对多。调用方需要继承RPCService类,构造函数需要传...原创 2019-08-29 11:30:33 · 3237 阅读 · 0 评论 -
容器进程(QQExternal)
容器进程的意义在于这个进程并没有指定的功能,他只是负责来加载其他模块(dll),相对于普通进程的优势就是,不用单独去做一个进程,在VS中我们只用关注实现逻辑就好,当需要这个功能单独运行在一个进程中的时候,我们可以方便的用容器进程去加载他,类似于Windows自带的rundll功能。但是我们的容器进程可以有更强大的辅助功能,可以提供进程间通信接口,让多进程编程更加容易。如果关注过QQ的QQExter...原创 2019-07-18 11:03:59 · 548 阅读 · 0 评论 -
基于QT的进程间通信组件
进程间通信在Windows客户端中也经常会有用到,很多客户端都需要多个进程来合作完成任务。比如说第三方sdk容器进程或者是后台服务进程。Windows上的进程间通信方式比较多,常用的就是共享内存。通用的做法是,创建一块共享内存,一个进程写,一个进程读,这是最简单的场景。主进程写入共享内存,然后用信号量或者时间对象等核心对象通知辅助进程读取数据就可以了。另一个复杂的场景就是,双方都要进行读写,这...原创 2019-06-06 16:32:56 · 962 阅读 · 0 评论 -
mac上编译boost
MAC上编译boost后在QT上使用时遇到两个问题,第一个是target版本不同 ,QT的版本是10.8,而boost编译出来的是10.12,因为我的mac刚升级到10.12.这样在连接boost时就报错。库的版本高于QT的要生成的APP的版本。第二个问题是链接libboost_filesystem.a时报错 :-1: error: symbol(s) not found for archit...原创 2017-03-23 17:11:18 · 1543 阅读 · 0 评论 -
QT 信号槽
QT的信号槽机制用起来好用,看起来也比较清晰,随时随处可以绑定自己关系的信号,非常方便。而且提供异步,跨线程使用也很给力。在之前还想把这个机制扩展成一个专门处理任务的异步队列,实验后发现不可行,多次绑定和发出信号后内存就急剧上涨,最后分配不到内存了。但是作为普通的事件通知方式还是很好用的。 信号可以从任何线程发出,如果绑定方式是direct那么,参函数执行跟信号发出是同一...原创 2018-12-20 15:23:24 · 403 阅读 · 0 评论 -
VS+QTAddin生成moc文件没有stdafx.h
在使用QT的信号槽机制时,moc.exe会根据类头文件生成对应的moc_xxx.cpp文件,这个文件时不带stdafx.h这个预编译头文件。如果工程属性设置了需要预编译头,在编译时这个moc文件就会报错。 解决方法,找到对应类头文件右键,打开属性页面,在moc.exe参数prepend中加入预编译头stdafx.h,重新编译项目,moc就会自动加入stdafx.h到moc文件中了...原创 2018-12-20 15:30:36 · 1416 阅读 · 0 评论 -
QT QPushButton
1.设置不同状态下的通用设置: auto closeBtn = new QPushButton; closeBtn->setFixedSize(20, 20); closeBtn->setStyleSheet("QPushButton{border-image:url(./resource/audio/audio_setting/close_normal.png);borde...原创 2019-02-17 15:22:35 · 2949 阅读 · 1 评论 -
QT-GZIP压缩解压
项目中http上报数据需要先用gzip进行压缩,参考了很多资料之后,利用QT本身自带的zlib封装了压缩和解压的两个方法:#include <QtZlib/zlib.h>#include <QByteArray>QByteArray Compress(QByteArray postBody){ QByteArray outBuf; z_stream c_st...原创 2019-03-22 16:19:55 · 3486 阅读 · 4 评论 -
QT-http接口
QT中提供了http网络接口,由QNetworkAccessManager,QNetworkRequest,QNetworkReply三部分组成。QNetworkRequest用于组件请求,包括请求头,请求内容。QNetworkAccessManager用于发出请求,常用的有get,post两个接口,参数就是QNetworkRequest,返回结果由QNetworkReply*。这里要注意的是...原创 2019-03-22 17:09:46 · 4954 阅读 · 0 评论 -
COMPASS数据上报总结
COMPASS上报模块整体为单例模块,生命周期同程序生命周期。外部暴露两个接口,Add,SetUserId.1.Add为外界传入上报数据接口2.SetUserId为设置userId接口,因为userId为业务层数据,而且需要再登录后才会获取到,所以暴露接口给外部输入。COMPASS上报要点:1.COMPASS上报为15秒上报一次,这个是根据后台的建议得来。2.每一条数据中...原创 2019-03-22 17:24:00 · 868 阅读 · 0 评论 -
VS生成PDB符号文件和调试Dump配置
最近在做QT相关的项目,发现QT插件创建的工程生成的pdb文件没有有效信息,于是与普通工程对比了一下发现了问题所在。所以总结一下pdb文件生成的配置:配置这两项之后就会生成具有有效格式的pdb了,这里面应该会包含编译时代码的路径,exe和pdb文件的路径。但是实际上在调试dump的时候这些路径不一定还存在。所以需要手动配置,VS很友好,缺少信息时会自动报出。上面的信息提示没有找...原创 2019-04-02 11:29:11 · 4625 阅读 · 0 评论 -
QT-文字显示控件排版
QLabel增加行间距:<p style='line-height:150%'> </p>,标记文件改写行高比例QTextEdit增加行间距: QTextBlockFormat blockFormat; blockFormat.setLineHeight(10, QTextBlockFormat::LineDistanceHeight); auto text...原创 2019-04-16 16:23:56 · 1562 阅读 · 0 评论 -
QT-线程池
在程序逻辑中经常会碰到需要处理大批量任务的情况,比如密集的网络请求,或者日志分析等等。一般会创建一个队列,用一个或者多个线程去消费这个队列,一般也要处理队列的加锁和解锁的问题,除非在设计时就能够做到专列专用,否则锁是不可避免的。而且在入队和出队的操作上肯定还是要加锁,因为他们是在不同线程对同一个资源进行操作。 线程池就是为这个而设计的,比如 Wi...原创 2019-04-19 15:24:20 · 8538 阅读 · 0 评论 -
QString编码转换
QString是QT中对于字符串的存储和处理的类,类似于MFC中的CString,如果用过的话就知道比std中的string和wstring要好用的多,功能也更强大。QString内部是将字符串保存为Unicode编码的,所以无论传入的字符串是什么编码,都会将其转为Unicode,那有一个问题就需要明确:QString构建的时候是如何知道传入的是什么编码的?这个就要看QString的构造函...原创 2019-05-20 14:58:31 · 11640 阅读 · 0 评论 -
QT Creator for android 配置
http://blog.csdn.net/syrchina/article/details/17335945还有一点要shuomi转载 2014-10-28 18:35:21 · 1988 阅读 · 0 评论