- 博客(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
2023-09-08
Qt QGraphics导入背景图并绘制图形,画布移动、缩放、图形旋转等
2023-06-30
QML模块及qmldir使用演示demo
2023-04-16
qml 类似移动端时间设置控件
2023-01-07
qtmqtt Qt6.2.4+VS2019 x64编译动态库及简单示例(附带Qt在线安装包+perl安装包)
2022-12-16
QML + KDDockWidget 实现 tabwidget 窗口可独立浮动和缩放
2022-12-05
Qt+opencv 鼠标绘制进行图形识别并进行item对象创建-Demo
2022-12-03
QML ListView实现TabBar标签拖拽移动位置效果
2022-11-25
QML 实现注册码输入控件,自动填入分隔符,粘贴内容格式化
2022-11-06
Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制
2022-10-26
Qt实现简易截图工具(支持缩放、移动、保存、复制到粘贴板)
2022-10-18
KDDockWidgets VS2019编译的动态库以及源码
2022-07-10
QFtp实现批量文件上传
2022-06-22
QML TableView Demo演示示例
2022-06-09
QtService 实现Qt后台服务程序
2022-06-07
Qt 反射机制实现,通过类名创建对象
2022-06-02
C++、C语言基础知识点强化,以及相关经典面试题、数据结构和算法知识及相关面试题汇总。
2022-05-24
Qt 实现钢笔画线效果,根据画线速度改变笔宽
2022-05-07
Qt 鼠标/触屏绘制平滑曲线(矢量/非矢量)
2022-05-06
Qt鼠标拖动绘制基本几何图形(直线、矩形、圆形、椭圆)
2022-05-06
KDDockWidgetTest.rar
2021-06-10
Qt Mqtt连接阿里云示例
2020-03-16
Qt MQTT简单示例Demo
2020-03-06
Qt 使用插件(Plugins)扩展应用程序简单示例Demo
2019-09-01
NSIS FindProc.dll+KillProcDLL.dll
2019-07-26
Qt Remote Object(QtRO)动态Replica实现进程间通信Demo
2019-06-15
Qt Remote Object(QtRO)进程间通信Demo
2019-06-12
Qt C++ 动态检测优盘插入或拔出
2019-03-28
C++工厂方法模式框架
2019-03-19
Qt C++发送图片到QML显示
2019-02-25
QML 中使用 C++定义的枚举类型
2019-01-06
QML ListView实现树形二级列表(类似 android ExpandableListView控件)
2018-08-11
Qt for Android 启动页 splash 延时显示
2018-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人