- 博客(33)
- 资源 (2)
- 收藏
- 关注
原创 vs2022 MSVC2017_64 调试Qt5.14.2源码
pdb调试文件下载路径https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5142/qt.qt5.5142.debug_info.win64_msvc2017_64/在vs中添加pdb文件符号路径,使其qt在调试时能查找到相应的符号文件。在需要调试的解决方案下通过解决方案点击:右键-》属性-》通用属性-》调试源文件,添加qt安装目录下的源文件路径,才能调试并定位到源代码。
2024-05-30 08:28:29
380
原创 ubuntu下生成coredump并设置永久生效
编辑/etc/default/apport,修改下列参数。在/etc/sysctl.conf文件末尾添加。要永久关闭Apport.server。在/etc/profile中加入。创建 /corefile目录。
2023-04-27 17:00:06
2257
原创 基于QPluginLoader的简单插件系统
插件系统分为两部分 第一部分:主程序,实现系统的 通用逻辑,加载定制化的插件 第二部分:插件,实现定制化的功能。系统的升级即可通过升级不同的插件即可完成整个系统的升级Qt插件系统中 我们使用 QPluginLoader 这个类去实现,主系统自动化加载插件。1.定义好系统的纯虚类eg:#ifndef FUNABSTRSCT_H#define FUNABSTRSCT_H#include <QObject>class FunAbstrsct{public: vir
2021-02-17 15:23:34
602
原创 SOCKET 简单实现同步服务器
#ifndef SERVER_H#define SERVER_H#include <QObject>#include <list>#include <winsock2.h>class server : public QObject{ Q_OBJECTpublic: explicit server(QObject *parent = nullptr); virtual ~server(); SOCKET m_server;
2021-02-03 14:37:18
252
原创 QWaitCondition使用小结
#include <QCoreApplication>#include <thread>#include <QWaitCondition>#include <iostream>#include <QThread>#include <QMutex>#include <queue>using namespace std;QMutex mutex1;QWaitCondition condition;int t
2021-01-15 15:50:00
455
原创 线程同步QSemaphore
QSemaphore类提供了强壮的整数信号量。QSemaphore也可以被用来使线程的执行顺序化,和QMutex的方法相似。信号量和互斥量的不同在于,信号量可以在同一时间被多于一个的线程访问。/**一个生产者 多个消费者情况,,使用 QSemaphore线程同步**/#include <QCoreApplication>#include <thread>#include <QSemaphore>#include <iostream>#in
2021-01-15 14:16:11
175
原创 win系统下共享内存通信示例
#include "mainwindow.h"#include <QApplication>#include <thread>#include <iostream>#include <windows.h>#include <mutex>using namespace std;typedef struct{ int head; int length; char data[1024] = {0};}pack
2021-01-05 14:28:25
134
原创 winSocket客户端简单示例
#ifndef SOCKETCLIENT_H#define SOCKETCLIENT_H#include <QObject>#include <winsock2.h>#include <queue>using namespace std;class socketClient : public QObject{ Q_OBJECTpublic: explicit socketClient(QObject *parent = nullptr);
2021-01-04 14:17:59
235
原创 c++类的静态函数访问成员方法
在类的静态函数中调用类的成员方法或变量时会报错,此时可以使用如下方法class A(){public: void setA(const int &a); static test();private: int m_a; static A* pThis;}A* A::pThis = nullptr;A::A(){ pThis = this;}void A::setA(const int &a){ m_a = a;}void A::test(){ int
2020-12-29 15:23:57
3057
原创 Qt日志(log)系统
在release下将异常打印到文件中void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg){ static QMutex mutex; mutex.lock(); QString text; switch(type) {// case QtDebugMsg:// text = QString("Debu
2020-07-27 13:10:21
950
原创 Qt调用python
#include #include <math.h>#include <Python.h>using namespace std;/*注意:error: ‘::hypot’ has not been declared注意将math.h引用在Python.h之前可解决以上问题python文件需要放在和.exe同级目录下面,否则将会调用失败使用如下方式将.py文件封装为.pyc文件 1.cmd定位到.py所在目录 2.在cmd中使用命令 python -
2020-07-21 16:02:16
389
原创 设计模式--观察者模式
定义对象间一对多的依赖关系,使得每一个对象状态改变,则所有依赖他的对象都会得到通知观察者模式 : 秘书站在门口,看见老板来了,发出信号,老板来了,,然后 员工通过观察秘书信号停止打游戏#include <iostream>#include <string>#include <list>using namespace std;class Secretary;//观察者class PlayGamerPeople{public: PlayGame
2020-07-12 20:15:25
134
原创 设计模式--责任链模式
责任链模式:有四个任务A,B,C,D 客户端将任务交给A,A完成后将任务交给B,B完成后将任务交给C.....本质:链表的实现#include <iostream>using namespace std;class makeCar{public : virtual void makeCarHandle() = 0; makeCar *setNextHandle(makeCar *handle) { if (handle != nullptr) { this-
2020-07-08 20:19:58
129
原创 设计模式--命令模式
命令模式是将一个动作分解为 请求命令者,管理命令者,执行命令者eg: 医生看病,这个动作分解为 患者提交看病申请给 护士,护士 负责管理申请, 同样负责将病历下发给医生,最后医生看病#include <iostream>#include <list>using namespace std;//执行者抽象类class doctors{public: virtual void trea() = 0;};//执行者实现类class NoseDoctors :p
2020-07-07 20:56:23
503
原创 设计模式--模板模式
模板模式:抽象类中规定好 抽象方法(具体实现由子类去实现),并规定好抽象方法的调用顺序#include <iostream>using namespace std;class makeCar{public: //抽象方法 virtual void makeHead() = 0; virtual void makeBody() = 0; virtual void makeTail() = 0; //抽象方法的调用顺序 void getCar() { makeHead()
2020-07-06 19:59:25
918
原创 设计模式--桥接模式
将抽象部分和实现部分解耦合,使得他们可以独立变化 eg:小汽车 都需要发动机,而发动机又多种多样,即多种多样的车安装各种类型的发动机#include<iostream>using namespace std;class Engine{public: virtual ~Engine() { } virtual void installEngine() = 0;};class A_Engine : public Engine{public: virtual ~.
2020-07-02 20:38:23
136
原创 设计模式--适配器模式
将已有的接口通过适配器转换成 新的需求所需要的接口#include <iostream>using namespace std;//新的需求所需要的接口class current18v{public: virtual void useCurrent18v() = 0; virtual ~current18v() { }};//已有的接口class current220v{public: void useCurrent220v() { cout <&
2020-07-01 20:37:55
81
原创 设计模式--装饰模式
动态的为某个对象增加额外的功能#include <iostream>using namespace std;class Car{public: virtual void showFunc() = 0; virtual ~Car() { }};class smallCar :public Car{public: void showFunc() { cout << "我能跑" << endl; }};class flyCar
2020-07-01 20:16:17
107
原创 设计模式--代理模式
特点:抽象角色:声明真实对象和代理对象的共同接口。代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。使用场景:代理模式就是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到
2020-06-29 20:19:17
6287
原创 设计模式--原型模式
一个复杂的对象具有自我复制功能,统一一套抽象接口注意:深拷贝浅拷贝问题#include <iostream>#include <string>using namespace std;class Person{public: virtual Person *clon() = 0; virtual void printT() = 0;};class man : public Person{public: man() { _name = "";
2020-06-28 20:16:51
100
原创 设计模式--建造者模式
**将对象的构建和对象的表示分离开来优势:对于使用者来说只需要选择不同类型的产品按照指定的框架就可以得到产品**#include<iostream>#include <string>using namespace std;//想要构建的产品的各个零件组成类class house{public: void setDoor(const string &door) { _door = door; cout << door <<
2020-06-27 20:30:36
137
原创 设计模式--抽象工厂类
工厂模式:一个工厂只生产一种产品抽象工厂模式:一个工厂生产一类产品#include <iostream>using namespace std;//抽象产品类class FruitObject{public: virtual void getFruit() = 0;};//抽象工厂类class FactoryObject{public: virtual FruitObject *createApple() = 0; virtual FruitObject *c
2020-06-26 11:13:03
128
原创 设计模式--工厂模式
工厂模式:在简单工厂模式下进一步解耦合工厂类,即将工厂分门别类,每个产品对应一个具体的工厂每增加一个产品,就增加一个工厂类#include<iostream>using namespace std;//水果抽象类class FruitObject{public: virtual void getFruit() = 0;};//苹果实现类class apple : public FruitObject{public: void getFruit() { cou.
2020-06-24 20:39:28
232
原创 设计模式--简单工厂模式
简单工厂模式:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类(本质是多态实现) 优点:不需要用户自己去创建实例,工厂类会代替用户创建 缺点:每次增加新的产品都需要修改工厂类,不符合开闭原则#include<iostream>using namespace std;//抽象类class Fruit{public: virtual void getFruit() = 0;};//具体实现类class apple : public
2020-06-24 20:03:03
124
原创 设计模式--单例模式(以及多线程下懒汉式优化)
单例模式:保证某个类在项目中只能实例化一次,减小资源的浪费懒汉式:在调用静态方法的时候分配内存饿汉式:直接分配内存懒汉式#include <iostream>using namespace std;/* 单例模式:保证某个类在项目中只能实例化一次,减小资源的浪费*/class socketer{private: socketer() { cout << "socketer执行" << endl; } ~socketer() {
2020-06-22 20:12:47
177
原创 设计模式--依赖倒转原则
依赖倒转原则:依赖于抽象类(接口类),不依赖于具体实现类即:高层业务逻辑依赖抽象类,具体实现类 依赖于抽象业务逻辑高层逻辑为:软件设计具体需求(eg:制造一台电脑)抽象层为:很多抽象类(eg:电脑由CPU,显卡,硬盘,内存条等组成,此部分为抽象类)具体实现类:实现高层逻辑的业务类(eg:具体的CPU,,显卡,硬盘,内存条等)#include<iostream>using namespace std;//抽象类class Cpu{public: virtual void do
2020-06-21 20:29:30
147
原创 设计模式--开闭原则
开闭原则核心:对扩展开放,对修改关闭即:软件增加或修改需求时,通过增加代码来实现功能,对原有功能模块代码不进行任何改动#include <iostream>using namespace std;class BankWorker{public: virtual void doSomeThing() = 0;};class BankSave : public BankWorker{public: void doSomeThing() { cout <<
2020-06-21 11:09:15
106
原创 软件设计模式--类与类之间的关系
注:以下示例只是为了说明 类与类之间的关系可能不太合理,请各位杠精不要抬杠1.依赖关系:一个类是另一个类的成员变量或者返回值,UML图中使用带箭头得虚线表示(eg:小明开车去上班)#include <<iostream>>using namespace std;class Car{}class XiaoMing{public: void goWork(Car *p) { } Car *goWork() { }}int main(){r
2020-06-20 20:35:15
501
原创 Qt 自定义多边形按钮
Qt下自定义多边形按钮//.hpp文件#include<QPushButton>class PushButtonObject : public QPushButton{ Q_OBJECTpublic: explicit PushButtonObject(QWidget *parent = nullptr); void setPixName(const QString &path="");}//.cpp文件PushButtonObject::PushBut
2020-06-20 16:34:15
994
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人