自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

luoyayun361的专栏

GitHub地址:github.com/luoyayun361

  • 博客(375)
  • 资源 (46)
  • 收藏
  • 关注

原创 qml 捕捉Alt+F4实现弹窗退出

前言总所周知,Alt+F4是系统快捷键,可以直接强制关闭当前活动的应用程序,那么,如果我们的程序退出的时候有弹窗确认,而系统在捕获到Alt+F4快捷键也需要弹窗确认该怎么做呢,今天来解决这个问题。正文首先,我们知道Alt+F4快捷键是可以直接关闭应用程序,在Qt应用中,如果要在响应该快捷键的时候在应用程序中弹窗,有两种思路,一种是直接抓取该快捷键,一种是直接响应快捷键后的关闭函数。如果是QWidget项目,抓取Alt+F4快捷键,有两种方式:响应nativeEvent事件去捕获,另一种是通过wind

2021-11-15 18:30:00 963

原创 关于C++ Qt项目实现最简单Http Server的踩坑记录

前言在开发Qt项目中,需要实现一个Http服务器功能,接收并处理客户端的http请求,Qt的发行版中并没有提供相应的类来处理,所以要实现该功能只能找其他开源项目了,本文主要记录我在收集相关资料过程中踩过的坑,希望能给需要的人提供一点帮助。qthttpserver前面说到,Qt官方在发行版中并没有提供相应的类来实现HTTP 服务端,但是Qt-lab中提供了一个qthttpserver,Github地址在这里,不知道基于什么原因Qt官方没有将其纳入正式的Qt发行版中,如果要使用qthttpserver的话

2021-10-30 17:54:37 4326 1

原创 FFmpeg windows下载安装

FFmpeg官网FFmpeg官网地址:http://ffmpeg.org/FFmpeg github地址:https://github.com/FFmpeg/FFmpeg下载windows下要使用FFmpeg可以直接下载官方现成的库,当然也可以自己通过源码进行安装,这里我们直接下载编译好的库。如下操作:这里可以下载essential和full版本,essential就是简版,只包含ffmpeg.exe、ffplay.exe、ffprobe.exe, 而full版本就包含了动态库和相关头

2021-10-25 22:50:46 2711 1

原创 使用QtService实现Qt后台服务程序

QtServiceQtService是一个用于实现windows服务或unix守护进程的开源项目,下载地址本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。源码在以上地址中将源代码下载到本地,目录结构如下:这里面有包含了几个示例程序,可以做参考。可以直接编译源码生成动态库然后在自己项目中使用,当然也可以直接在项目中引用源码。示例为方便演示,我们新建一个工程,介绍如何使用。新建一个控制台程序然后将qtservice源码拷贝到项

2021-10-08 17:26:25 11948 8

原创 Qt之FTP实现--QFtp篇

前言前文已经介绍了Qt项目中实现FTP上传文件的三种实现方式,今天主要看QFtp的实现,以及接口在使用过程中需要注意的问题避坑。正文首先我们要知道ftp服务器端的IP地址,以及端口号,前面我们介绍到FTP协议有两种方式,主动模式和被动模式(这里不做过多介绍,感兴趣的可以去查阅相关资料),通常开发都是使用被动模式,这种比较简单,由服务器端默认端口地址为21,客户端连接。接着需要登录ftp的账号和密码,知道这几个数据后就可以连接服务器了。我们看一下相关接口:QFtp ftp;ftp.connect

2021-09-09 18:42:10 15185 10

原创 Qt三种方式实现FTP上传功能

前言废话不多说,直接先上结果。三种方式实现Qt项目中的Ftp传输功能:1、Qt4 QFtp2、Qt5 QNetworkAccessManager3、POCO中的 FTPClientSession接下来我们一一分析这几种方式的优缺点。QFtp先来说说QFtp,QFtp是Qt4中的专门负责Ftp传输的类,Ftp相关的常用接口都已经包含了,比如说:创建目录、删除目录、删除文件、获取文件列表、上传、下载等等常规操作。 int setProxy(const QString &host, qu

2021-09-07 17:30:56 9919

原创 使用conan编译安装poco

1.先安装python、pip2.安装conan, pip install conan3.通过conan安装poco新建一个文件夹,然后在文件夹中 新建 conanfile.txt在conanfile.txt中输入以下内容[requires]poco/1.10.1[options]# poco:shared is False by defaultpoco:shared=True说明:1.10.1是版本号,可以通过 conan search poco --remote=conan

2021-09-02 22:08:11 1213

原创 Linux(UOS) Qt不能播放音频的问题

网上有很多关于编译Qt 源码时配置configure的文章,但是需要注意的是,不同Qt 版本可能对应的configure配置会有差异,特别是大版本之间,所以网上的有些配置并不一定能适用你当前的Qt版本,除非用的Qt版本一样。这里可以看几项对于audio的编译配置,主要是前两个,在linux x86环境下通过Qt 安装包安装的目录下,插件audio中可以看到两个库,在编译之前还有一个地方要注意,要编译libqtaudio_alsa这个库必须要先在本机安装 alsa,可以通过。这样基本就没问题了。

2021-07-30 11:53:17 2705

原创 Linux下Poppler源码编译安装

PopplerPoppler是用于呈现可移植文档格式(PDF)文档的免费软件实用程序库。它的开发得到freedesktop.org的支持。它通常在Linux系统上使用,并被开源GNOME和KDE桌面环境的PDF查看器使用。源码下载在官网下载源码:编译下载源码后解压,然后在终端进入到解压目录,通过命令编译:sudo cmake -G Ninja报错:-- Checking for module 'nss>=3.19'-- No package 'nss' found-- Co

2021-07-28 11:14:55 3430 1

原创 UOS系统下FFmpeg源码编译安装及注意事项

条件当前编译环境:国产UOS系统(基于linux),CPU是ARM架构需要安装ffmpeg 3.4版本。通过源码编译进行安装使用下载源码在github上将ffmpeg源码下载到本地:下载地址git clone https://github.com/FFmpeg/FFmpeg.git然后在终端,切入到ffmpeg目录,查看远程分支:git branch -a接着将我们需要的版本代码迁出来:$ git checkout -b 3.4 origin/release/3.4修改conf

2021-07-27 19:58:55 1158 3

原创 Linux UOS(国产统信)系统下Qt无法打印日志的问题

前言国产系统统信UOS(其实就是一个基于deepin的Linux系统)下,使用Qt无法通过qDebug打印日志,网上找了好多关于Qt无法输出日志的问题,都没有真正解决,终极解决办法如下:首先在终端输入 export -p 查看环境变量的配置,在输出列表中看到:发现有一行是QT_LOGGING_RULES="*.debug=false"解决方案在终端输入命令编辑以下文件:/etc/X11/Xsession.d/00deepin-dde-envsudo vi /etc/X11/Xsession

2021-07-26 14:05:46 2008 1

原创 Linux下源码编译安装新版libxcb

前言上一篇文章提到,linux 下编译Qt源码如果要用到Quick的话,那么运行时会依赖qxcb库,而编译生成qxcb库就需要先安装libxcb,并且最低要求 版本大于1.9.1Requires libxcb >= 1.9.1.所以,本篇中主要介绍如何通过源码编译安装最新版的xcb库。为啥一定要用源码编译安装呢,其实在命令行通过apt-get install 同样可以安装xcb,而且方便快捷,这样确实可以安装,但是不能保证是最新版。下载源码首先在这里下载源码:https://xcb.fr

2021-07-05 18:19:44 10028 6

原创 Qt5.15.2 Linux ARM架构源码编译安装(UOS20国产系统)

环境国产系统:UOS20内核版本:4.19.0-arm64-desktop处理器:华为鲲鹏920@2.6GHz目标,将现有Qt项目移植到改系统下进行开发。开始准备安装Qt5.15.2 ,Qt官方提供的安装包都是x86架构下的,不能直接在arm架构下安装,网上看了很多示例,说可以直接在终端通过命令行来安装:sudo aptitude install libdtkwidget-dev qt5-default qtcreator qtdeclarative5-dev这样确实可以安装Qt,但是装的是

2021-07-05 18:17:43 20589 35

原创 Ubuntu下安装谷歌浏览器(Google chrome)报错

问题描述在Ubuntu下准备安装谷歌浏览器,下载后打开安装,发现不能正常安装,提示“此软件来自第三方且可能包含非自由组件”,如下:解决方案安装第三方软件解决方案:gdebi 的安装sudo apt install gdebi-core 如果不能安装,先试着换个源,并执行sudo apt-get update找到已下载好的谷歌浏览器安装包位置,然后执行:sudo gdebi xxx.debxxx.deb是安装包名称...

2021-06-27 18:56:28 1045

原创 ubuntu下qt运行报错 /usr/bin/ld: cannot find -lGL

问题描述在Ubuntu下运行Qt程序报错:/usr/bin/ld: cannot find -lGLcollect2: error: ld returned 1 exit status解决方案需要安装gl库:执行以下命令sudo apt-get install libgl1-mesa-dev

2021-06-27 18:53:37 550

原创 安装VMware提示“此产品安装程序不支持降级“

描述在安装VMware-workstation-full-15.5.2-15785246时,提示"此产品安装程序不支持降级":解决方案下载 WindowsInstallerCleanUp 软件[下载地址],安装在默认安装路径下打开 msicuu.exe选中VMware字样的程序,然后Remove。接下来再次运行“Wmare”虚拟机安装程序了,而且发现安装程序正常运行。...

2021-06-25 18:15:53 13098

原创 qml dockwidget窗口停靠

前言前面一篇文章介绍了KDDockWidgets的使用(文章在这里),其实主要目的就是为了用KDDockWidgets提供的Qt quick 下的窗口停靠功能。Qt原生部并没有提供Qt quick的dockwidget,也不知道为啥。其实窗口停靠功能其实是非常常见的,但是Qt只支持QWidget的。KDDockWidgets刚好可以解决这个问题,详细介绍在之前的文章已经介绍过了,其功能比QDockWidget更加丰富。那么,今天就来看一下如何用KDDockWidgets做自己的在qml 下的窗口停靠功

2021-06-10 10:28:21 3464 9

原创 Qt5.15.2+VS2019安装小结

Qt安装Qt 公告中提出:从 Qt 5.15 开始,开源版本,无论是不是 LTS,都只能在线安装。如果确实需要离线安装包,则要购买 Qt for Small Business 产品Qt 5.15 是 Qt5 最后的LTS(长维护版本),同时 Qt 5.9 LTS 也将于5月31日终止。Qt 5.15 可视为 Qt 6 的铺垫,例如该版本的 QML 包含许多新特性对于桌面应用,Qt 5.15 开始支持自定义标题栏Qt5.15详细更新信息请参考Qt在线安装器下载下载后打开需要先登录Qt账号,然后

2021-06-05 11:23:38 3468

原创 KDDockWidgets源码编译及安装

简介KDDockWidgets 是由 KDAB(官网) 编写的 Qt Dock 小部件库,适用于替换 QDockWidget和实现 Qt 中缺少的高级功能。功能特点:提供 QDockWidget 不支持的高级对接在 Windows 上调整本机窗口大小(即使使用自定义标题栏装饰也允许 Aero-snap)箭头下降指示器可实现出色的下降精度允许完全不同的、用户提供的、丢弃指示器类型在浮动窗口中嵌套停靠小部件并将该组停靠回主窗口停靠到任何主窗口,而不仅仅是父主窗口停靠到主窗口的中心,或者干脆

2021-06-05 11:21:59 2970 9

原创 【windows】编译安装ninja

安装前准备安装ninja需要编译源码,所以在编译前需要做如下准备:1.安装git for windows ,下载地址2.安装Visual Studio 2017(或2015)3.安装python3.x源代码下载ninja源码地址:git://github.com/ninja-build/ninja.git在git bash终端输入将代码clone到本地:git clone git://github.com/ninja-build/ninja.git && cd ninja

2021-06-03 19:49:38 2326

原创 【windows】python安装小结

下载安装包官网下载地址找到自己的电脑配置以及自己想要安装的python版本,我这里是win10 64bit,选择最新版本安装,所以直接下载最新的安装包:安装选择添加到环境变量直接默认安装。简直so easy…重启设备使环境变量生效。...

2021-06-03 19:48:28 257

原创 【windows】CMake安装小结

下载安装包官网下载地址根据自己的系统选择相应的安装版本,我这里是win 10 64bit,所以我下载:点击即可下载。安装下载完成直接双击安装选择添加环境变量到所有账户安装完成。在终端中输入cmake,有以下提示,说明安装成功。...

2021-06-03 19:47:52 397

原创 【windows】Qt打开资源管理器并选中指定文件

前言在实际应用中,可能会有这样的需求,在软件中的文件树可以通过右键菜单打开windows系统的资源管理器,并在窗口中选中指定的文件,原有的做法是直接通过QDesktopServices::openUrl来打开资源管理器,但是并不能实现高亮选中文件。要实现这个功能其实并不难,需要执行终端命令:explorer /select,xxx,Qt应用可以直接使用QProcess来执行终端命令。ok,简单封装接口,以备后续所需。代码void openExplorerFile(const QString &am

2021-05-31 21:23:54 4125

原创 解决谷歌浏览器不能打开Axure原型的问题

前言产品给的原型图打不开?在谷歌浏览器打开Axure原型时出现以下画面:其实该页面已经描述了解决方案,需要安装一个插件,但是下载插件需要翻墙才行,要不然就只能干瞪眼了。离线安装1.首先下载离线的插件文件,在这里下载2.下载完后解压3.打开谷歌浏览器-更多工具-扩展程序4.页面右上角 打开“开发者模式”5.点击“加载已解压的扩展程序”6.选择刚刚解压出来的目录就ok了,如下7.重新打开原型文件,大功告成。...

2021-04-21 23:26:35 4092

原创 Coding:C++类定义实现部分成员函数

class String{public: String(const char *str = nullptr);//通用构造函数 String(const String &other); //拷贝构造函数 ~String(); String & operator() =(const String &rhs); //赋值函数private: char *m_data;};String::String(const char *str).

2021-04-19 23:43:12 289

原创 C++之仿函数简介

概述仿函数(Functor)又称为函数对象(Function Object),函数对象是一个对象,但是使用的形式看起来像函数调用,实际上也执行了函数调用,因而得名。仿函数的语法普通的函数调用一样,调用仿函数,实际上就是通过类对象调用重载后的operator()运算符。所以作为仿函数的类,必须重载operator()运算符。仿函数的作用:可替代函数指针,使用更加灵活可存储状态,形成一种类似...

2021-04-19 23:41:07 1317

原创 C++11:move移动语义

前言我们知道移动语义是通过右值引用来匹配临时值,那么,普通的左值是否也能借助移动语义来优化性能呢,C++11为了解决这个问题,提供了std::move方法来将左值转换成右值。正文move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存拷贝。move实际上并不能移动任何东西,它只是将一个左值强制转换成一个右值引用,使我们可以通过右值引用使用该值,以用于移动语义,强制转换为右值的目的是为了方便实现移动构造。这种move语义是很有用的,比如一个对象中有一些指针资源或者动态数组,在对

2021-04-11 09:21:58 2316

原创 Coding:在数组中查找具有给定总和的对

PS:没事儿做做题,预防老年痴呆~描述给定一个未排序的整数数组,找到其中有给定总和的一对数字。eg:输入:arr = [3,5,2,9,7,6,11,0] sum = 10输出:索引 0和4只要找到一对数字即可。方法一最简单也是最暴力的方法,用两个循环遍历数组,判断两个数字之和,如果符合条件则返回数组下标。该方法比较简单,但是时间复杂度为O(n^2),比较高。直接上代码,C++实现// 时间复杂度O(n^2) 空间复杂度 O(1)vector<int> find

2021-04-11 08:39:22 208

原创 Coding:从给定数字集中找到最大的数字

描述从给定数字集中找到最大的数字,这些数字应以任何顺序相互附加以形成最大的数字。比如:输入: {10,68,75,7,21,12}输出: 77568211210分析这个题不能简单的将数组降序排列然后进行组合,排序后变成 {75,68,21,12,10,7} 组合成数字就不是最大数。思路:实现自定义比较器函数,对于两个数字x和y,将其转换成字符串,然后组合起来将 xy和yx进行比较,然后较大的数字将按顺序排在最前面。比如:对于 x=10 y=68,xy = 1068,yx=6810 ,然后

2021-04-11 08:38:02 367

原创 C++11:forward及完美转发

代码using namespace std;template<typename T>void PrintT(int &t){ cout << "lvalue" << endl;}template<typename T>void PrintT(int &&t){ cout << "rvalue" << endl;}template<typename T>voi

2021-04-10 23:52:11 1612 2

原创 Coding:就地合并两个排序数组

描述给定两个大小分别为m和n的已排序的数组x和y,通过保持排序顺序将x的元素与y的元素合并。即用前m个最小元素填充x,其余元素填充y。要求就地完成,不能创建其他数据结构。如:输入:arrX = {2,5,8,10,15};arrY = {1,6,9}; 输出:arrX = {1,2,5,6,8};arrY = {9,10,15}; 分析这个问题的麻烦点在于不能创建新的数组,智能就地完成。思路:由于数组本身已经是有序的,那么我们通过循环将x数组每个元素与y数组的第一个元素进行

2021-04-10 23:34:48 218

原创 C++最简单的方式实现split分割函数

前言C++的字符串string中没有提供分割函数,比如将字符串 “1,2,3,4” 分割成 {“1”,“2”,“3”,“4”},这个场景在编码中很常见,那么既然没有现成的,就只能自己实现咯,方法很多,可以通过循环遍历进行拆解。这里提供一个更简单的方法,代码更简洁。上代码std::vector<string> split(const string &str, const string &del){ std::regex re{ del }; return s

2021-04-10 23:30:25 1485 2

原创 Coding:两个从大到小的有序链表合并成一个从小到大有序链表

要求请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。struct list{ int value; list* next;};list * merge (list *list1_head, list*list2_head);代码 list *merge(list *list1_head,list *list2_head) { list *newlist = NULL; list *curr

2021-03-07 14:28:45 623

原创 Coding: 一亿个数找最大的1000个数

描述一亿个数找最大的1000个数,要求效率高占用内存少。函数原型为:find_max_data(int* source_data, int* max_data),其中source_data是存放一亿个数的数组,max_data用于存放其中最大的1000个数。思路使用multiset的自动排序功能(默认从小到大排列),每次插入比最小数更大的值。代码// 从1亿个数中找到最大的1000个数void find_max_data(int *source_data, int length, int k)

2021-03-07 09:47:43 424

原创 Coding:取若干个1到n的整数可求和等于整数m,求出所有组合的个数

要求给定整数n,取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。比如当n=6,m=8时,有四种组合:[2,6], [3,5], [1,2,5], [1,3,4]。限定n和m小于120.0-1背包问题解法:#include <iostream>#include <vector>using namespace std;int main(){ int n,m; cin>>n>>m; vector<int&

2021-03-04 23:42:16 1370

原创 Coding: 整数反转

要求输入一个有符号整数,输出该整数的反转值。如:输入500,输出5输入 1234 ,输出4321输入-345,输出-543代码#include<iostream>using namespace std;int main(){ int in; cin >> in; int out = 0; while(in != 0) { out = out * 10 + in % 10; in /= 10

2021-03-04 22:20:13 205

原创 Coding: 2的N次方

描述对于一个整数N(512 <= N <= 1024),计算2的N次方并在屏幕显示十进制结果。输入描述:输入一个整数N(512 <= N <= 1024)输出描述:2的N次方的十进制结果输入:512输出:1340780792994259709957402499820584612747936582059239337772356144372176403007354697680187429816690342769003185818648605085375388281194

2021-03-03 23:09:11 250

原创 Coding:用指针的方法,将字符串首尾对调输出

代码/** * 用指针的方法,将字符串首尾对调输出 * 例如:输入 "ABCD1234efghij" * 输出:jihgfe4321DCBA * */#include <stdio.h>#include <string.h>#include <dos.h>int main(){ char str[] = "ABCD1234efghij"; int length = strlen(str); char *p1 =

2021-03-03 17:20:42 1420

原创 VS Code设置代码片段(C++)

前言VS Code设置代码片段,官网介绍代码片段是模板,可以快速地输入重复的代码,比如循环、条件语句、注释模板等。在vs code中代码片段会和自动提示IntelliSense(Ctrl + Space)一起出现,也出现在专用的代码片段选择器中(在“命令面板”中插入代码片段)。还支持制表符补全:使用启用它"editor.tabCompletion": “on”,键入一个代码段前缀(触发文本),然后按Tab键插入一个代码段。正文本文主要介绍如何自定义代码片段,可以选择要显示代码段的编程语言,我们这里

2021-01-26 18:18:14 2959 3

原创 Windows访问Fedora共享文件夹

前言目的:在Fedora系统下创建共享文件夹,然后在windows中正常访问。正文安装Samba命令:dnf install samba配置1.通过samba访问Linux文件夹时,需要用户名和密码:smbpasswd -a 用户名将用户名替换成你要设置的名称,回车后会提示输入密码。2.创建一个文件夹用于共享,或者直接用现有的文件夹也可以。3.修改配置文件,将共享文件夹的信息添加进去。sudo vi /etc/samba/smb.conf然后在最后添加以下信息[shared

2021-01-26 16:19:45 942

QML实现文件十六进制显示Demo

在QML项目中实现一个显示文件十六进制数据展示的demo,可直接引入项目使用。 支持高亮某段数据,快速定位,头部底部对齐,主题切换,截图保存,切换展示宽度等功能。在开源代码的基础上进行扩展,并移植到QML中进行使用。 博客主页:https://blog.csdn.net/luoyayun361

2023-09-08

Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等

使用Qt QGraphic实现一个应用场景,直接导入背景图,并在背景画布上绘制几何图形,包括矩形、圆形等,支持画布整体移动、放大和缩小,画布恢复,图形item选中、移动、旋转。item移动 会实时显示全局坐标以及相对于背景画布的坐标。本Demo提供基本功能实现,便于在此基础上进行扩展。 博客主页:https://blog.csdn.net/luoyayun361

2023-06-30

QML模块及qmldir使用演示demo

在开发QtQuick项目中,当项目文件很多的情况下,可能会分成多级文件夹来进行分类,还有一些通用类型文件,如公共组件,通用配置等等,需要在各个不同的文件中进行调用,这种情况下,一种方式是在当前需要引用的文件中通过关键字`import` 加上相对路径,从而找到通用文件目录。另一种方式就是将通用文件目录设置成qml模块形式,通过import直接引入模块名称就可以直接调用相关qml了,这样的好处是在任何不同的目录中都可以随处导入模块,而不用考虑相对路径的问题。 demo是QML模块及qmldir使用演示示例。

2023-04-16

qml 类似移动端时间设置控件

qml实现一个类似手机端闹钟或其它时间设置控件。可以用ListView实现其效果,但是QML提供有现成的控件可以用,所以要实现这个效果更方便。 博客地址:https://blog.csdn.net/luoyayun361

2023-01-07

qtmqtt Qt6.2.4+VS2019 x64编译动态库及简单示例(附带Qt在线安装包+perl安装包)

随着Qt6的发布,Qt官方开始推崇cmake编译,而qtmqtt对应的版本和Qt发布的版本一致的,所以qtmqtt从6.0发布以来,也开始默认用cmake编译。这样一来,很多之前习惯用Qt5的童鞋就有点摸不着头脑了,特别是一些刚入门的新手,看到Qt工程,习惯性的一上来就去找pro工程文件,但是Qt6的cmake工程是没有pro文件的,所以更是二脸懵逼。 资源包含了qt在线安装包软件和perl安装包。 demo下的mqtt目录可以直接拷贝到其他项目使用 博客介绍:https://luoyayun361.blog.csdn.net/article/details/128339682

2022-12-16

QML + KDDockWidget 实现 tabwidget 窗口可独立浮动和缩放

QML + KDDockWidget 实现 tabwidget 窗口可独立浮动和缩放效果 KDDockWidget是第三方开源项目,可以用于实现QML中Dock窗口效果,Qt本身不支持QML的Dock效果,所以正好弥补这部分空缺。而KDDockWidget中其实是支持Tab合并效果,但是在实际使用过程中遇到很多问题,该功能并不是很完善,所以索性自己使用QML来实现tabbar效果,然后结合KDDockWidget,可将每个tab页面进行单独的浮动和缩放。 本Demo使用环境 Qt5.15.2+VS2019 KDDockWidget动态库是在源码基础上做过部分修改后重新编译的。 博客地址: https://blog.csdn.net/luoyayun361

2022-12-05

Qt+opencv 鼠标绘制进行图形识别并进行item对象创建-Demo

使用Qt + OpenCV实现,通过鼠标绘制几何图形,然后通过opencv进行图形识别,然后创建对应的几何图形item项。绘制使用QGraphics体系完成。 支持图形:直线、圆、椭圆、矩形、三角形。 快捷键:数字3 清屏 本示例通过简单演示整个流程,若运用到实际项目中需要进一步优化。 博客:https://blog.csdn.net/luoyayun361

2022-12-03

QML ListView实现TabBar标签拖拽移动位置效果

QML中TabBar要实现标签移动效果比较麻烦,不像QTabBar控件那样可以设置属性后就能移动,虽然在父类Container中提供了moveItem接口,但是要实现拖拽交换的视觉效果还是没那么容易。 本demo使用QML的ListView来实现该功能,并动态切换对应的page内容。demo提供了动态添加页、删除页、移动交换标签位置功能。 详情见:https://blog.csdn.net/luoyayun361

2022-11-25

QML 实现注册码输入控件,自动填入分隔符,粘贴内容格式化

QML TextField实现注册码输入控件,自动填入分隔符,粘贴内容格式化。 类似office的授权,产品密钥输入方式。 博客: https://luoyayun361.blog.csdn.ne

2022-11-06

Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制

本示例是使用Qt QGraphics框架来实现桌面画线标记功能,绘制流畅,支持快捷键擦除、退出、缩放等功能。 博客:blog.csdn.net/luoyayun361

2022-10-26

Qt实现简易截图工具(支持缩放、移动、保存、复制到粘贴板)

使用Qt Widget实现一个简易截图工具,支持选区角落拖动缩放、选区移动,支持保存,复制到粘贴板,支持快捷键调出截图、退出截图。 详情参考博客: https://luoyayun361.blog.csdn.net/article/details/126097384

2022-10-18

KDDockWidgets VS2019编译的动态库以及源码

本dll及demo编译环境: vs2019+Qt5.15.2 64bit。 32bit不能用!!! dll分quick和QWidget版是不一样的,对应的include头文件也不一样,不能混用。 example目录下包含两个演示demo,每个demo下有个KDDockWidgets文件夹,可以在自己的项目中直接添加 KDDockWidgets.pri到自己的工程中即可使用。 博客说明:https://luoyayun361.blog.csdn.net/article/details/117533375

2022-07-10

Wininet.dll 32+64位库下载

Wininet.dll 32+64位库下载

2022-06-25

QFtp实现批量文件上传

示例包含了FTP登录,为方便演示,本次连接的FTP服务器就是上篇文章中介绍的在windows本机搭建的FTP服务器。Demo功能包括:选择文件夹进行批量上传文件,列举FTP服务器上的所有文件,以及文件实时上传进度 这几个重要功能。其实QFTP还提供了很多其他接口,用法都是差不多的,可以举一反三。

2022-06-22

QML TableView Demo演示示例

QML中实现表格可以使用多种方式,比如直接使用ListView,定义每一行delegate,或者自定义Rectangle,放到Flipable中组合使用。Qt Quick Control1中 从5.1版本开始就提供了表格控件,但是感觉不怎么好用,在Qt Quick Control2中 5.12版本开始又提供了一个专门用于做表格的控件TableView,相比于前面的方案,使用Tableview更加简单和直接。那么,接下来就看看Quick Control2 的TableView使用方法。 博客介绍:https://blog.csdn.net/luoyayun361/article/details/122361571

2022-06-09

QtService 实现Qt后台服务程序

QtService是一个用于实现windows服务或unix守护进程的开源项目,下载地址 本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。 博客介绍:https://luoyayun361.blog.csdn.net/article/details/120655011?spm=1001.2014.3001.5502

2022-06-07

Qt 反射机制实现,通过类名创建对象

反射是指程序在运行时动态获取对象属性与方法的一种机制,即编译器需要将类型信息(属性类型与偏移地址以及成员函数的地址等信息)编译到程序文件中,当程序运行时将这些信息加载到内存中去,做到运行时只根据对象的地址或引用就可以获取到对象的类型信息,从而利用这些信息达到修改或重建对象的目标。 简单一点说,就是可以通过类名称来创建一个类对象,这在Java和Object-C中是原生支持的,所以实现起来非常简单,但是C++就不支持了,如果想要用到反射机制,那就得自己实现。

2022-06-02

C++、C语言基础知识点强化,以及相关经典面试题、数据结构和算法知识及相关面试题汇总。

C++、C语言基础知识点强化,以及相关经典面试题、数据结构和算法知识及相关面试题汇总。更多请参考:https://luoyayun361.blog.csdn.net/article/details/123289250?spm=1001.2014.3001.5502 https://luoyayun361.blog.csdn.net/article/details/105026257

2022-05-24

Qt 实现钢笔画线效果,根据画线速度改变笔宽

在Qt-WritingBoard基础上支持钢笔书写效果,会根据画线速度调整线条粗细。 快捷键控制: - 按键1:画线模式 - 按键2:擦除模式 - 按键3:清空画布 - 按键+:放大 - 按键-:缩小 博客介绍:https://luoyayun361.blog.csdn.net/article/details/104340258

2022-05-07

Qt 鼠标/触屏绘制平滑曲线(矢量/非矢量)

t通过鼠标或者触屏,实时绘制平滑曲线,通常有两种方式实现:矢量绘图和非矢量绘图,这两种画线方式从实现上有些不同,其原理也不太一样,稍后会做详细介绍。而鼠标或者触屏画线也不大一样,通常如果只实现鼠标画线的话,那么只需要重新实现鼠标事件即可(mousePressEvent、mouseMoveEvent、mouseReleaseEvent),而要在触控屏上画线,如果需要支持多点画线的话,就必须处理QTouchEvent事件才行,但是如果触屏上只支持单点画线,那也可以直接实现鼠标事件,因为第一个触点的事件会同时进入到QTouchEvent和Mouse事件中。QTouchEvent中可以区分出多点时每个触点的id,通过id进行区分每个点的数据。 原文链接:https://blog.csdn.net/luoyayun361/article/details/93650003

2022-05-06

Qt鼠标拖动绘制基本几何图形(直线、矩形、圆形、椭圆)

用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。使用QGraphics完成。 本示例使用QGraphics体系来实现,因为要移动对象,所以生成的图形必须是一个单独的对象,鼠标拖动绘制的过程是在临时层中完成,release后生成一个矢量的图形item并添加到场景中。 博客地址:https://blog.csdn.net/luoyayun361/article/details/93890331

2022-05-06

QFtp-source.rar

QFtp源码文件,已经修改过编码问题,直接引用到自己项目中就可以使用,无需编译成动态库。

2021-09-09

WindowsInstallerCleanUp.rar

解决安装VMware提示"此产品安装程序不支持降级"

2021-06-23

KDDockWidgetTest.rar

qml实现Dockwidget窗口停靠功能,详细可见:https://luoyayun361.blog.csdn.net/article/details/117752657

2021-06-10

axure_chrome_extension_V0.6.3.rar

谷歌浏览器插件,用于打开Axure原型

2021-04-21

Qt Mqtt连接阿里云示例

本示例用于演示 如何用MQTT连接到阿里云IOT,本文主要介绍基于TCP的MQTT连接,客户端直连。详情参加博客 https://blog.csdn.net/luoyayun361

2020-03-16

Qt MQTT简单示例Demo

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种构建于TCP/IP协议的"轻量级"消息传输协议,它基于发布/订阅(publish/subscribe)模式,由IBM在1999年发布。对于需要较小代码占用空间或网络带宽有限的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。 https://blog.csdn.net/luoyayun361/article/details/104671603

2020-03-06

Qt 使用插件(Plugins)扩展应用程序简单示例Demo

插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。

2019-09-01

NSIS FindProc.dll+KillProcDLL.dll

NSIS打包时,如果有用到查找和杀死进程,所需的重要库,FindProc.dll和KillProcDLL.dll,附带拷贝说明

2019-07-26

Qt Remote Object(QtRO)动态Replica实现进程间通信Demo

博客地址:https://blog.csdn.net/luoyayun361/article/details/92205562

2019-06-15

Qt Remote Object(QtRO)进程间通信Demo

博客地址:https://blog.csdn.net/luoyayun361/article/details/91588654 Qt Remote Object简称QtRO,这是Qt5.9以后官方推出来的新模块,专门用于进程间通信(IPC)。在这之前,要实现进程间通信有多种方式,这里就不做介绍了,而Qt官方推出的这个新模块是基于Socket来封装的,使用起来非常方便,兼容LPC和RPC。LPC即Local Process Communication,而RPC是指Remote Process Communication,两者都属于IPC。QtRO能够工作于这两种不同的模式:如果用于LPC,则QtRO使用QLocalSocket;如果是用于RPC,则使用QTcpSocket。对于一个Qt开发者来说,如果项目中涉及到进程间通信,那么直接使用现成的模块进行开发, 莫过于是最好的选择,集成度高,代码量少。

2019-06-12

C++设计模式--观察者模式 demo

观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

2019-04-14

Qt C++ 动态检测优盘插入或拔出

在开发文件浏览相关应用时,会涉及到动态检测优盘插入或拔出的状态,这样可以实时的刷新界面显示。这里通过调用windows的接口来实现该检测,代码很简单。我是在Qt工程中使用的,其核心代码是一样的。

2019-03-28

C++工厂方法模式框架

工厂方法模式是对简单工厂模式的进一步抽象和推广,而此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。博客地址:https://blog.csdn.net/luoyayun361/article/details/88653986

2019-03-19

C++简单工厂模式框架 demo

C++实现简单工厂模式,这里是一个简单的 demo框架,可以通过该用例了解简单工厂模式的代码写法。

2019-03-18

Qt C++发送图片到QML显示

开发Qt应用时,想把QImage发送到QML端通过Image组件显示出来,这种场景主要用在例如在C++端调用android系统接口截图然后发送到QML端显示,或者C++端QWidget截图然后让QML界面中显示。要想实现该功能,需要用到一个重要的类QQuickImageProvider,这是专门从C++端提供图片到QML显示的。

2019-02-25

QML 中使用 C++定义的枚举类型

如果要在 QML使用 C++中定义的类型,有些数据类型是是可以直接使用的,如常见的 int,但是还有一些相对特殊的类型就需要做些特定的操作才可以使用了。 博客地址:https://blog.csdn.net/luoyayun361/article/details/85922756

2019-01-06

QML ListView实现树形二级列表(类似 android ExpandableListView控件)

QML 中没有直接提供类似 android 的ExpandableListView二级列表控件,treeView,但是用 treeView 实在是有些不方便,并且达不到想要的效果,所以干脆用 ListView 来扩展一个。

2018-08-11

Qt for Android 启动页 splash 延时显示

网上有很多介绍都是关于 Android 原生开发上关于启动页的配置说明,大体思路都是自己创建一个启动页面,然后定定时器延时显示,几乎很少看到用 Qt 开发Android如何配置,对于一个并不太熟悉 Android原生开发者以及刚接触用 Qt 跨平台开发者来说无疑是一个比较难的问题,在研究过很多 Android 原生配置以及 Qt 的官方文档后终于找到了最简单的解决方案。

2018-08-11

QML实现阴影字体效果

用 QML 实现阴影字体,详情见https://blog.csdn.net/luoyayun361/article/details/80687430

2018-06-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除