自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 c/c++提供lua接口的参数遍历

c、c++提供接口供lua脚本调用时,会涉及到参数的调用,那么在c、c++层是如何遍历参数的呢?

2024-01-25 18:16:22 350

原创 lua深度复制对象

【代码】lua深度复制对象。

2023-12-25 19:04:27 424

原创 Qt的qss通过动态属性来改变样式

第一种方式是将样式直接写到代码里面 ,虽然也可以通过配置文件的方式(比如json)来操作,但是很零散。第二种方式:动态增加属性,配置好所有状态的样式表并加载,然后通过修改属性的方式来实现。在实际应用中,会存在这样的需求:同一个按钮根据不同的逻辑显示不同的样式,比如,第二种和第三种方式可以将样式写到css文件中,比较友好,方便样式管理。第一种方式:每次修改逻辑时直接设置stylesheet即可。第三种方式:通过修改类的方式来实现动态切换样式。

2023-06-02 15:31:57 1432

原创 C#判断断网(不管后端还是客户端)

TCP有一个连接检测机制,就是如果在指定的时间内(一般为2个小时)没有数据传送,会给对端发送一个Keep-Alive数据报,使用的序列号是曾经发出的最后一个报文的最后一个字节的序列号,对端如果收到这个数据,回送一个TCP的ACK,确认这个字节已经收到,这样就知道此连接没有被断开。在Windows中,第一次探测是在最后一次数据发送的两个小时,然后每隔1秒探测一次,一共探测5次,如果5次都没有收到回应的话,就会断开这个连接。我们要搞清楚的就是inOptionValues的定义,在C++里它是一个结构体。

2023-03-29 22:18:07 961

原创 QSharedMemory在linux下异常崩溃导致的bug

QSharedMemory在linux下异常崩溃导致的bug

2023-03-08 19:47:59 667

原创 Qt源码在32位arm上编译

qt在嵌入式arm上32位系统编译

2023-02-28 21:54:34 532 1

原创 lua中通过debug.sethook()动态跟踪脚本当前执行的情况,包括运行到哪行、哪个函数、哪个文件

lua debug.sethook debug.getinfo

2023-02-03 18:22:32 1013

原创 lua中json和table互转

lua中json和table互转

2023-02-03 18:14:03 2670 4

原创 lua中的逻辑运算

lua的逻辑运算

2023-02-02 17:34:12 365

原创 lua:字符串转table

lua中字符串转table

2023-01-29 09:16:36 1178

原创 lua:table转json字符串

lua中table转json字符串

2023-01-29 09:15:26 1316

原创 istreambuf_iterator和ostreambuf_iterator用法简单总结

istreambuf_iterator ostreambuf_iterator

2022-11-11 15:39:42 1681

原创 Qt的rcc资源,换肤或新皮肤发布

Qt换肤

2022-06-22 14:53:54 1012

原创 libevent实现UDP通信

因为libevent在底层上是没有直接支持udp通信,并且在Windows上,对于udp的iocp操作,libevent也不支持(实际Windows本身是支持IOCP实现UDP通信的)不过仍然可以利用libevent实现udp通信,调试源码发现,libevent是通过select模型去实现的。下面的例子实现了先绑定某个端口,当收到消息时,udpread_cb发生回调。如果不需要绑定端口,那么就需要先sendto后,才能够收到消息,udpread_cb才会发生回调。#include <

2022-04-19 21:22:11 2575

原创 libevent实现客户端

#include <string.h>#include <errno.h>#include <stdio.h>#include <signal.h>#ifdef _WIN32#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "event.lib")#pragma comment(lib, "event_extra.lib")#.

2022-04-19 15:29:07 759 1

原创 libevent服务端,多线程应用2

上文已经介绍过了,当Windows因为防火墙问题,可能导致evutil_socketpair失败,那么我们可以利用定时器的方式来添加新连接的用户,在一章中,修改如下libevent服务端,多线程应用#include <thread>#define CLIENT_THREAD_COUNT 2struct tagThreadContext{ std::thread thd; std::mutex mtx; std::unordered_set<evuti

2022-04-18 18:19:52 259

原创 libevent服务端,多线程应用

下面的方式是创建多个event_base来处理多线程的,主event_base用来处理连接请求,各个子event_base用来处理读写和关闭请求。另一种方式是,所有的连接、读写、断开操作,都在一个event_base里面,然后当读到数据时,放入到子线程中处理,处理完了后再写,不过此时需要读写加锁,参考下列代码中的client_register_cb(...)// TestServer.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <str.

2022-04-18 17:57:14 1091

原创 libevent服务端,单线程应用

libevent单线程的应用

2022-04-18 17:48:47 287

原创 Windows防火墙与TCP、UDP

当Windows防火墙开启的时候,可能导致一些TCP和UDP监听的端口无法接收到数据或者是数据无法发出去。此时就需要把监听的端口添加到Windows的入栈出栈规则里面。入栈和出栈是相对的,别人访问你,要入栈,你访问别人,叫出栈将端口添加到入栈中,这样比人就可以访问你:入栈输入以下命令netsh advfirewall firewall add rule name="你的名称" dir=in action=allow program="你的应用完整路径" enable=yes profile=

2022-04-01 15:32:16 4737

原创 QNetworkAccessManager的坑

在用Qt自带的QNetworkAccessManager做http请求时,碰到一些坑,比如在请求过程中,碰到断网后,即使再把网线连上,也无法请求,而且报错信息为:QNetworkReply::UnknownNetworkError "Network access is disabled."原因可以参考:https://blog.csdn.net/linkang1024/article/details/96306421大致就是说,断网了后,网络状态改变了,但是重新连网后状态并没有更正过来,所以htt

2022-04-01 15:00:53 1279

原创 QtCreator生成的exe添加管理员权限

Qtcreator生成的exe默认是不支持管理员权限的,就是生成的exe图标右下角有一个盾牌的标志,有2种方式可以实现,亲测通过。首先:新建 xxx.exe.manifest文件,名字随便取。内容如下:<?xml version='1.0' encoding='UTF-8' standalone='yes'?><assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> <tr

2022-04-01 14:49:15 1179 1

原创 windows上bug崩溃定位分析(Qt或者VS)

任何情况下,都不能保证自己写的代码不会发生崩溃,崩溃不可怕,可怕的是无法定位哪里崩溃,特别是客户那边崩溃,开发者这边不崩溃,问题陷入僵局。自从有了下面这个神奇的代码,再也不怕了。以下代码亲自测试没问题。1. 如果是在VC++中,那么只需要将下列2个文件直接添加到工程中.发布程序后,如果发生了崩溃,那么在崩溃的文件中就已经记录了“哪个文件的哪一行发生了崩溃”。再也不用像以前那样要在项目属性中配置,要生成.map、.cod等等文件,然后计算偏移地址来分析了。2. 如果是在Qt+MinG.

2022-03-16 21:30:32 4381 1

原创 Qt中搭建WebAssembly

Qt适合emsdk的版本,参考官网: Qt for WebAssembly | Qt 5.15【踩过的坑】1. Qt5.15.2的目录下已经包含了wasm编译所需要的库和环境,默认路径在 5.15.2/wasm_32下,但是wasm对应的emscripten版本是1.39.7,可以通过输入命令行(先cd到你的pro工程目录下)的方式来获取版本信息,所以你需要下载并安装emscripten1.39.7版本。下文有介绍安装方式。D:\Qt\Qt5.15.2\5.15.2\wasm_32\bin\q.

2022-01-29 09:52:12 5778 8

原创 qt插件开发一般步骤

qt插件开发一般步骤

2022-01-25 14:51:25 987

原创 QTimer的一点点误区

对于Qt的信号槽,正常情况都能够发射和接收,但是对于QTimer,它有一个需要注意的地方就是:在子线程中(就是那个run函数里面,它是运行在子线程中的)创建QTimer,发现不起作用,这是因为QTimer是基于事件循环的,qtimer又是一个很特殊的东西,所以在run中,必须要进入qt的事件循环才有用,并且new的时候,还不能指定parent为this。但是在qthread的构造函数中,qtimer却是可以的,因为它也是在主线程中构造的么。定时器不起作用QThreadXXX::run()

2022-01-25 14:40:24 370

原创 Qt的D和Q指针

Qt的D指针和Q指针,实际上就是一个类的成员指针变量,改变量指向另一个Private类对象,这个Private类对象中包含了一系列的成员和函数。这样做的目的:1.可以对外隐藏数据内容。2. 防止改变类的数据模型,从而做到二进制兼容。Q_DECLARE_PUBLIC提供一个q_func q_ptr Q_Q,一般是在XXXPrivate类中使用,需要自己声明 XXX* q_ptrQ_DECLARE_PRIVATE提供一个d_func d_ptr Q_D,一般是在XXX类中使用,需要自己声明XXXPr

2022-01-25 14:27:49 1097

原创 std::result_of实现分组group by的功能

工作中,有时候需要对相同的条件进行分类,比如同名的,同年龄的。添加头文件#include <iostream>#include <string>#include <unordered_map>#include <vector>定义jie

2021-06-08 10:23:04 423

原创 QWidget派生的子类对样式表不起作用,而Qt自带的库却没问题

QWidget派生的子类在使用样式表的时候,发现不起作用,但是在使用qt的库时发现是起作用的。这是因为样式表的实现需要paintEvent中实现才起作用,而QWidget的paintEvent是空的。而从QWidget派生来的qt自带的组件中,都实现了paintEvent,所以样式表没问题。关于此问题,帮助文档中有提到过,需要如下实现:具体帮助文档在哪里我找到,不过我也看到了QStyle里面有提到过。同时也参考了另一篇博主:https://blog.csdn.net/nathan1101/a

2021-04-28 14:25:33 194

原创 Qt实现阴影边框,可拖动,可缩放窗口(三)

阴影这部分,采用的是具有阴影的图片和九宫格的方式来实现的,之所以采用九宫格,就是为了让窗口缩放时不出现失真的问题。#pragma once#include <QWidget>#include <QPaintEvent>#include <QPixmap>class CShadowWindow3 : public QWidget{ Q_OBJECTpublic: explicit CShadowWindow3(QWidget* pSh

2021-04-28 14:11:00 322

原创 Qt实现阴影边框,可拖动,可缩放窗口(二)

通过paintEvent来实现的,绘制方形的阴影没问题,但是绘制圆角阴影的话,发现圆角不够圆润,而且有断裂的感觉。#pragma once#include <QWidget>#include <QPaintEvent>class CShadowWindow2 : public QWidget{ Q_OBJECTpublic: explicit CShadowWindow2(QWidget* pShadowWidget,QWidget *paren

2021-04-28 12:34:26 269

原创 Qt实现阴影边框,可拖动,可缩放窗口(一)

通过QGraphicsDropShadowEffect来实现,主要思想就是:把无标题的透明窗体添加阴影后作为背景,然后把正常的窗体作为子窗口附加上去。#pragma once#include <QWidget>#include <QResizeEvent>class CShadowWindow : public QWidget{ Q_OBJECTpublic: explicit CShadowWindow(QWidget* pShadowWidg

2021-04-28 11:40:46 374

原创 c++中返回函数指针的函数

工作中,有时候,我们需要根据某个条件来返回一个函数来执行某个任务,那么这个时候可以想到使用函数指针,也可以返回一个function函数指针的例子经典的函数:void (*signal(int sig, void (*func)(int)))(int);http://www.cplusplus.com/reference/csignal/signal/?kw=signal分析:signal是一个函数,它有2个参数,一个参数是int类型,另一个参数是void(*)(int)函数指针,同时它返回...

2021-04-02 10:27:59 678

原创 decltype和declval的用法

1. decltype是c++11以后出现的一个新的关键字,是用来萃取表达式或者变量或者函数返回值的类型的。具体用法可以参考官网:https://en.cppreference.com/w/cpp/language/decltype2. declval是c++11中的一个模板函数,原型如下:具体用法可以参考官网:https://zh.cppreference.com/w/cpp/utility/declvaltemplate<classT>typenamestd::add_..

2021-03-31 18:19:21 777

原创 result_of 用法

result_of的用法(一)为什么要使用result_of?当我们不知道某个可调用对象(普通函数,类成员函数,lambda表达式,function,重载了operator()操作符的函数)的返回值时,result_of可以萃取该可调用的返回值。(二)使用方式官方详细解释:https://en.cppreference.com/w/cpp/types/result_oftemplate<class> classresult_of;// not defined,泛化版...

2021-03-30 20:35:31 1540

原创 c++11实现线程池

c++11实现的线程池,采用的是函数式编程接口的方式来处理各个任务,比传统的通过实现 Runnable接口的方式更加简洁方便。添加头文件#include <iostream>#include <thread>#include <vector>#include <queue>#include <functional>#include <mutex>#include <condition_variable>

2021-03-29 20:09:44 204

原创 wqw

#include "stdafx.h"#include #include "zthread/PoolExecutor.h"#include "zthread/ThreadedExecutor.h"#include "zthread/ConcurrentExecutor.h"#include "zthread/SynchronousExecutor.h"#include "z

2016-02-19 14:31:36 166

原创 aaa

asasssss

2016-02-19 14:29:29 138

QT4中文使用手册

本文当中含有QT的相关语法和编程小案例,可以供初学者使用。Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器。Qt是面向对象语言,易于扩展,并且允许组件编程。

2012-06-21

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

TA关注的人

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