- 博客(22)
- 资源 (6)
- 收藏
- 关注
原创 当C++的static遇上了继承
这是因为我们是定义A了来指向new出来的B, 那么 b1->GetCount()的时候其实是调用了类A的GetCount()。毫不意外,因为B构造的时候就会调用A的构造函数,所以,A的Count_为8,B的Count_为5.3、怎么样来获取实例化的B的数量呢?其实再增加一个virtual就好了。比如我们想要统计下当前类被实例化了多少次,我们通常会这么写。1、现在做下小修改,让B继承自A,结果会发生变化吗?2、再次修改,用new的方式创建。输出理所当然的是 3 和 5。结果又成了熟悉的8、 5。
2024-06-07 20:42:46
382
原创 多参数函数或宏定义
用于传递多参数//调用测试输出结果:100 99.980003 abcdefg 没有#100, 99.98f, "abcdefg" 带有一个# (把参数通过逗号连接成一个字符串)100 99.980003 abcdefg 带有两个#//调用测试 无参数//低版本的会报错//编译报错//正常编译,正常打印。
2024-01-07 11:35:25
681
1
原创 MySql交叉编译的CMake配置
本来-DCMAKE_ENABLE_C++11=1就可以正常打开C++11了,但是结果发现没应用上;就又加后面两个选项后,才发现C++11确实加上了。有点奇怪,但是每次编译都要花费很长时间,就不想去追究了,索性都加上。编译过程中又会遇到很多奇奇怪怪的问题,但是本博主太懒了不想罗列。反正大多都是交叉编译出来的可执行文件不能在宿主机上执行之类的,所以在交叉编译前要先用宿主机编译一遍,这样的话就得到了本地可执行的文件了。都是配置C++11,为什么要加上两个呢?
2023-03-24 17:30:35
213
原创 Windows锁屏实现
2、上面的HOOK却屏蔽不了Ctrl+Alt+Del,可以挂起winlogon.exe进程,强制它不处理Ctrl+Alt+Del事件。以上,一个简单的锁屏程序就完成了,后面我们就可以再加些为所欲为的功能了,比如开机锁屏,计时锁屏、密码解锁等等。6、第一步的时候保留了一个回车键用来退出锁屏,进程退出的时候注意要取消安装的钩子和恢复winlogon.exe进程。5、启动的时候如果任务管理器在,关掉任务管理器,防止上面的设置失效。1、屏蔽键盘鼠标,利用HOOK封锁键盘和鼠标。
2023-01-20 09:15:35
702
原创 QSettings设置编码后依然乱码
QSettings set("config.ini", QSettings::IniFormat); set.setIniCodec("GB2312"); set.setValue("TEST/val", "你好"); QSettings set1("config.ini", QSettings::IniFormat); set1.setIniCodec("GB2312"); qDebug() << set1.value("CONFIG/name").toString();配..
2022-04-25 17:28:11
2138
原创 Windows下QtCreator不能切换中文输入法
打开QtCreator发现中文输入法不灵了,怎么都切不到中文输入法上,起先觉得是输入法的问题,果断又重新装了一个输入法,发现还是不行。。。后来一个环境变量 QT_IM_MODULE 引起了我的注意,值看起来是个无效值。删除这个环境变量后再重新打开QtCreator一切正常,解决!...
2022-03-28 10:51:28
2022
4
原创 qDebug重定向(非常好用)
/*FileLog.h*/#ifndef FILELOG_H#define FILELOG_H#include <QObject>class FileLog : public QObject{ Q_OBJECTpublic: explicit FileLog(QObject *parent = nullptr); void installMessageHandler(); void uninstallMessageHandler();};.
2022-01-21 23:13:20
1266
原创 QTableView的自定义样式和代理
先上张效果图就不贴完整代码了,只把具体的实现代码给弄上来,相信一看就那啥://设置QTableView表头高度和大小时,必须设置section的first,middle,last和设置字体颜色,不然设置大小不生效 QString strStyle = R"( QHeaderView::section:first, QHeaderView::section:last, QHeaderView::section:middle
2022-01-19 21:05:17
3667
4
原创 QTextEdit拖动文本内容区使其滚动
借助QScroller类很容易实现。 //如果直接是ui.textEdit也可以,但是滚动条就失效了。所以需要保持滚动条的作用时就要使用viewport QScroller* scroller = QScroller::scroller(ui.textEdit->viewport()); //默认是触摸事件触发,这里改成鼠标事件触发。 scroller->grabGesture(ui.textEdit->viewport(), QScroller::LeftMouseB.
2021-09-10 10:18:31
1550
3
原创 Qt简单封装的sqlite数据库操作、导出Excel等等(复制粘贴直接可用,大概吧)
导出Excel封装类#pragma once#include <QStringList>#include <QVariant>#include <QWidget>class Export{public: Export(const QVariant& content,int row,int col,QWidget* parent = nullptr); void ExportExcel(); //线程中导出excel void SetEx
2021-07-14 17:03:32
1865
原创 QTimer的跨线程启动问题
记录一个跨线程启动QTimer的问题。问题是个小问题,但是不注意的话就不是知道为啥咱的计时器它咋就坏了呢。先看个示例代码:(为简洁 部分省略[手动狗头])//*.h//主窗口类class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QWidget *parent = 0); ~Dialog(); void startTimer();public slots: void s
2021-07-14 16:44:23
1784
原创 内存环形队列
实现思路,开辟一段连续的内存,通过head和tail记录有效内存的位置。添加数据时head前进,读取数据时tail前进。需要注意的是,head记录指向的是下一个位置且不存储值,而tail存储值。上一张图帮助理解:实现://_H#ifndef __BUFFER_QUEUE_H__#define __BUFFER_QUEUE_H__typedef struct buffer_queue{ unsigned int head; //head所指向的位置不存储值
2021-04-29 16:48:40
246
原创 线程管理池
线程多了,就需要一个线程管理池,线程管理池的工作就是负责开启线程,负责退出线程。/*线程管理池实现 * *参考开源代码iiod的实现 */#include <errno.h>#include <pthread.h>#include <signal.h>#include <stdint.h>#include <stdlib.h>#include <sys/eventfd.h>#include <unis
2021-04-29 15:32:00
116
原创 CMakeLists.txt入门使用
#define WIDTH_COLOR#ifdef WIDTH_COLOR #define COLOR_DEBUG "\e[0;32m" #define COLOR_INFO "\e[0;38m" #define COLOR_WARNING "\e[01;35m" #define COLOR_ERROR "\e[01;31m" #define COLOR_END "\e[0m" #define DEBUG_LOG(str,...) \ .
2021-04-22 14:39:02
372
转载 COM组件的创建与调用以及注册表位置查找示例
详细的创建过程和调用可以参考https://blog.youkuaiyun.com/weixin_30451709/article/details/98574314?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2其中的注册组件regSvr32 Debug\$(TargetName).dll 较关键现在简单来看看注册成功后,系统到底是把东西注册到哪里去了呢?COM组件生成成功后,我们在.idl的文件中能看到这样的东西// ..
2020-06-06 11:48:54
6274
原创 Qt实现简单线程池
Qt本身就具备线程池类QThreadPool,使用起来也很方便,不过现在我们用QThread来做一个自己的线程池。创建用来管理线程池的类ThreadPool,在这里它发挥着管家的职责,掌管公共资源的使用。由于管理任务的队列、锁以及条件变量都声明了私有,所以给WorkThread声明为友元类,以便其能访问。为了简单,我们只定义了一个构造函数以及三个函数: ThreadPool(int count,QObject*parent=nullptr) 其中count表示要在线程池中创建多少个子线程
2020-06-04 21:05:41
2556
2
原创 Qt学习之路---线程启动与关闭
在编程当中遇到了一些问题:到底该使用哪种方式去创建线程呢? Qt创建线程有两种方式。第一种继承QThread重写run函数,需要注意的是只有run函数才在线程中执行,其它函数被父类直接调用时,它执行所在的线程还是在父类所在的线程中。第二种继承QObject使用moveToThread启动线程,这也是官方推荐的写法,比较灵活通用。第一种 继承QThreadclass ThreadTes...
2018-07-08 19:45:23
29325
7
使用GDAL创建大像素图.zip
2020-09-19
ThreadPool.zip
2020-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人