![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT/QML
文章平均质量分 54
PRML_MAN
喜欢算法和编程,希望大家一起探讨技术问题,也希望有问题可以给我留言
展开
-
QT日志重定向方法介绍
QT日志信息重定向方法介绍原创 2023-02-27 21:07:53 · 494 阅读 · 0 评论 -
Qt 中C++ async实现并行处理
在项目中,难免遇到性能问题,为了提高处理的性能,针对可以并行处理的部分单独提取出来,利用并行编程来提高处理的速度,从而实现高性能。C++11中有一个async()函数,非常方便的实现异步处理。每次调用async()函数,会自动创建一个线程来进行处理,并返回一个future<> 未来变量,根据future变量,可以获取返回值。async函数解析函数原型如下:/// Launch code for futures enum class launch { async = 1,原创 2021-08-18 21:34:46 · 1666 阅读 · 1 评论 -
Qt中通过C++ 实现udp广播报文
Qt UDP消息交互udp广播原理介绍客户端实现方法客户端思路实现代码服务端实现方法服务端思路实现代码udp广播原理介绍UDP是面向非连接的网络交互协议,在UDP交互中,存在客户端和服务端,客户端(Client)主要来发送报文,服务端(Server)接收来自客户端的报文,在进行报文交互的时候,UDP是非连接的,客户端发送一个报文到指定端口,然后服务端监听了这个端口,如果收到这个报文,然后就进行处理,如果收不到,或者因为处理报文的消息队列太大,被抛弃了,就导致服务端无法收到这个报文。给大家举个例子,敌人扔原创 2021-08-17 21:48:08 · 2200 阅读 · 0 评论 -
Qt QFile 删除文件最后n个字节的数据
QFile无需打开文件,即可删除文件最后面的n个字节的数据。方法很简单,可以通过QFile自带的resize函数进行大小的处理。 resize( size): 如果 size的大小大于file的大小,file后面会自动填充0,最终达到size大小。 如果size的大小小于file的大小,file会从最后面自动删除,来实现size大小。 因此可以通过下面的方法,来删除文件最后面的4个字节的数据。...原创 2021-06-24 08:53:34 · 1235 阅读 · 0 评论 -
Qt基础知识汇总(持续刷新)
Qt基础知识汇总1、获取文件的绝对路径2、判断文件是否存在3、判断路径是否存在4、注册结构体类型5、QString 和string的转换6、QVector 遍历方法7、QThread 用法1、获取文件的绝对路径获取绝对路径#include<QFileInfo>QString path = "/home/user/file.txt"QFileInfo fi = QFileInfo(path);QString absPath = fi.absolutePath(); // 提取绝对路径原创 2021-06-03 19:36:24 · 827 阅读 · 0 评论 -
QML之GridView实现滑动的网格布局
最近在做关于滑动网格的需求,正好用到了GridView实现对应的功能。1、GridView 关键属性GridView相关的属性比较多,下面是一些关键的属性:cellHeight: 表格中单个格子的高度cellWeight: 表格中单个格子的宽度currentIndex: 当前焦点所在的索引delegate: 代理,即格子内的实现方式layoutDirection: 所有格子的排列顺序model: 表格的数据2、GridView实现滑动表格实现思路:1、创建一个GridView,设原创 2021-05-14 16:58:06 · 3061 阅读 · 1 评论 -
QT之QDir文件目录拷贝、创建、删除
在开发过程中,需要用到文件的一些处理,例如文件夹的拷贝,文件夹删除或创建,文件的拷贝、删除等操作。Qt已经包含了这些操作,作为一个跨平台的开发工具,这些功能绝对会帮助你在跨平台开发中很方便。Qt中QDir类实现了对文件夹和路径的处理,QFile类实现了对文件的处理。1 文件夹创建使用Qt的QDir来实现文件夹的创建。QDir path; // 创建一个QDir变量if (!path.exists("c:/test")) { // 使用QDir成员函数exists()来判断文件夹是否存在 pat原创 2021-04-06 21:45:46 · 5808 阅读 · 3 评论 -
QT-windepolyqt打包程序详细介绍
在windoes平台下,通过Qt开发的程序,如何进行打包在其他的电脑中使用呢?Qt自带一种工具windeployqt来进行打包,下面详细介绍打包的流程和避免的坑。详细流程如下:1、Qt程序设置release编译,生成exe文件, 将exe文件拷贝到单独的目录2、使用windeployqt进行打包3、将打包好的程序放到新的电脑运行4、常用定位方法1、生成exe文件项目中参考下面的操作,配置release版本,需要注意的就是64位和32位,根据需要进行配置。点击运行按钮,生成exe文件。将exe原创 2021-03-27 10:25:17 · 7071 阅读 · 3 评论 -
QML亮度调节滑动条
功能:鼠标点住后上下拖动,实现进度条滑动,可以用于实现触摸屏幕上的亮度调节按钮或音量调节按钮。实现思路1、首先画一个矩形记为Rect1,设置颜色为白色,作为根矩形2、画一个跟矩形Rect1大小一致的矩形Rect2,Rect2的透明度设置为透明,主要用于拖动3、画一个Rect3跟Rect1大小一致,颜色为绿色,主要用来显示进度。4、Rect2移动后的位置Rect2.y 跟当前的位置curY求差:dist = curY - Rect2.y, 有了dist后,可以计算Rect3的高度:Rect3....原创 2021-03-10 20:06:11 · 1000 阅读 · 0 评论 -
QML进阶-球形进度条(圆形进度条)
先上图,确认一下是否是你需要的图片。实现思路1、利用canvas画图工具画出圆形circle1(外围的大圆)2、画出内部的小圆区域,利用clip函数裁剪。裁剪后,只有圆内的图像才可以显示,圆外的不显示。clip裁剪的功能如果你不懂,可以[看这里](https://www.w3school.com.cn/tags/canvas_clip.asp)3、裁剪后利用percent绑定填充区域的上边界,进行颜色填充,填充的时候,我们采用矩形填充即可,如下图,因为clip已经限定了只能在圆内显示。4、设...原创 2021-03-09 20:28:18 · 1554 阅读 · 0 评论 -
QObject::startTimer: Timers can only be used with threads started with QThread
今天用QObject的startTimer()函数启动定时器,结果爆出了下面的错误:QObject::startTimer: Timers can only be used with threads started with QThread通过分析发现,Timer启动必须从线程开始启动。下面是我的代码:TestTypeClass::TestTypeClass(){ timerId = this->startTimer(1000); qDebug()<<timerI原创 2021-03-04 08:46:11 · 7385 阅读 · 1 评论 -
QML进阶--Loader实现组件的动态切换
在QML学习和开发过程中,看到Loader的官方介绍之后,发现Loader就是用来动态加载一个qml或者component的容器。有一个问题在我脑海里冒了出来:loader加载一个qml或者一个组件,完全可以通过设置这个qml或者组件的visible为true或者false进行显示,那么Loader的强大之处到底在哪里呢?带着这个问题,浏览了一些资料和代码,最终发现了Loader的一个强大之处–可以对整个组件或者qml进行整体的动态切换,写起来比较简单明了。发现这个功能后,本人就动手用Loader去实现原创 2021-03-03 21:14:53 · 1640 阅读 · 6 评论 -
Qt错误-Cannot read property xxx ‘width‘ of null
今天在写QML代码时,新增一个函数,出现了Cannot read property xxx ‘width’ of null的错误,开启了定位操作。1、错误代码如下function getDiskInfo(retCode, ret) { diskModel.clear(); data = ret.split("-"); for (var i =0; i < data.length; i++) { diskModel.append({"data": data[原创 2021-03-03 10:26:56 · 1177 阅读 · 0 评论 -
Qt多语言开发--Qt语言专家
Qt强的的功能之一就是支持多语言切换,本文主要介绍如何去支持多语言开发。Qt多语言开发主要流程如下:1、Qt tr()和qsTr()标记待翻译字符串2、Pro文件中,添加生成ts的代码3、Qt语言专家更新ts文件4、Qt语言专家打开ts文件,填写对应的翻译5、Qt语言专家将翻译后的ts文件生成qm文件6、QTranslator加载qm语言文件7、qApp->installTranslator() 安装语言文件1、标记待翻译内容Qt代码包括c++代码和qml代码,不同风格的代码标记原创 2021-03-01 20:03:00 · 3950 阅读 · 2 评论 -
QML LinearGradient实现文字渐变闪烁动画
QML利用Timer实现字体渐变动画上一篇文章介绍了利用Timer对单个字母进行颜色变化实现文字渐变动画,对于文字比较固定的场景比较合适,但是对于文字数目会发生变化的场景的适应性并不好,发现了一种更好的方法来实现文字的动画。主要用到的QML功能如下:1、LinearGradient2、GradientStop3、SequentialAnimation4、NumberAnimation实现原理利用LinearGradient对文字区域进行梯度颜色设定,利用GradientStop在不同的...原创 2021-02-09 10:20:20 · 1045 阅读 · 0 评论 -
QML利用Timer实现字体渐变动画
1、实现效果图确认一下是否是你要找的效果呢?如果确定,那就继续阅读吧。2、实现原理该功能实现非常简单,下面是流程:1、首先对每个单词进行拆分,即一个字符串拆分成多个字符,对每个字符定义一个Text;2、对字符的颜色进行定义,并且绑定一个变量值3、定义一个Timer,并且实时刷新颜色对应的变量值。3、核心代码介绍Text { id: name anchors.left: parent.left height: 10 width: 30 text:原创 2021-02-09 08:08:37 · 717 阅读 · 0 评论 -
QML SequentialAnimation实现闪烁文字动画
字体闪烁主要通过动画来实现,控制字体的透明度,达到闪烁的效果。1、SequentialAnimation 介绍SequentialAnimation和 ParallelAnimation 都是多动画的实现方式,SequentialAnimation是一种串行的动画,动画按顺序运行,而ParallelAnimation是并行动画,所有的动画同时运行。对于动画文字则是采用SequentialAnimation将多个透明度的变化动画串联实现。下面介绍SequentialAnimation的相关参数和使用方法.原创 2021-02-03 21:34:23 · 1587 阅读 · 0 评论 -
QML如何实现窗口缩放隐藏
上面实现了窗口以矩形的方式进行缩放隐藏和显示。实现介绍该功能主要使用了QML动画中的NumberAnimation来实现,下面简单介绍一下NumberAnimation。NumberAnimation顾名思义就是数字动画,可以改变类型为数值的属性,从而产生一系列的动画,例如,width,height,radius,scale等等。相关属性介绍:target: 目标easing.type: 动画播放形式,详情:https://www.xuebuyuan.com/146517.htmlprope.原创 2021-02-03 10:37:47 · 1100 阅读 · 0 评论 -
QML DropShadow介绍
QML DropShadow介绍1、DropShadow环境2、参数介绍3、DropShadow如何使用4、实例DropShadow会在原组件上产生一些阴影,来提高组件的视觉效果,例如,可以使得按键有立体效果,窗口层次分明等等。1、DropShadow环境加载对应的组件QtGraphicalEffects。import QtGraphicalEffects 1.02、参数介绍cached : 是否需要缓存,默认为false,如果设置为True,则占用内存color : 阴影对应的颜色,默认为原创 2021-02-02 16:15:58 · 1132 阅读 · 0 评论 -
QML如何创建掩码窗口
QML在界面设计时,满屏的触发按键,在弹出新窗口时需要对屏幕中非当前窗口的位置做一个灰度处理,不仅能够体现界面的层次感,而且能够防止误触到其他按键,导致异常处理,按规矩,先上图(左边原图,右边是弹出窗口后的图片):1、原理该方法的原理很简单,创建一个跟原窗口一样大小的Rectangle,记为backgroundWin,设置颜色为灰色,透明度为部分透明,然后在backgroundWin的中间再创建一个新的Rectangle为fontWin,这样在视觉效果上可以实现该功能,敲黑板,下面是重点注意的地方:原创 2021-02-02 14:31:40 · 256 阅读 · 0 评论 -
QML动态添加多个Button
QML中如果要布局大量的按扭,如果一个一个的去写,那就太low了,下面介绍一下利用 Qt.createComponent动态创建组件,大家先看一下结果图(确认一下眼神,是否是对的人)1、createComponent() 函数介绍/* * 输入: * url: 要创建组件的qml文件名称,例如 “TestButton.qml” * mode: 设置当前创建的方式为同步还是异步(Component.Asynchronous(异步), Component.PreferSynchron原创 2021-02-02 14:07:54 · 2041 阅读 · 1 评论 -
QML String和数字互相转换
QML String和Int类型互相转换String 转换成数字数字转换成字符串String 转换成数字QML代码中,如果遇到字符串转数字,可以使用Number(str)将str转换成数字类型import QtQuick 2.12import QtQuick.Window 2.12Window { visible: true width: 640 height: 480 title: qsTr("Hello World") property string原创 2021-01-29 10:58:41 · 11747 阅读 · 1 评论