自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 魔幻

2020-11-12 15:28:26 169

原创 tool use

/******* file dir show *************************/root cppDir xxx.pb.h xxx.pb.cc xxx.grpc.pb.h xxx.grpc.pb.ccproDir xxx.proto***********************************************/[normal]protoc -I=$proDir --cpp_out=$cppDir $proDir/xxx...

2020-10-22 11:43:33 190

原创 Just demo test

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); for(int i = 0; i < 3 ; i++){ QLabel* l = new QLabel(QString::number(i)); auto item = new QListWidgetItem; .

2020-10-15 16:23:53 149

原创 Care

1.vector高效使用2.vector<T*>元素删除,释放所有,及vec本身的释放3.proto使用,nanomsg gprc4.todo

2019-12-20 20:15:06 120

原创 Understand

引用与指针的区别,引用占用内存,底层本质虚表,创建,运行高效使用std::vectorc11,新map与hash内存分布,const ,static动态静态库使用场景c11,智能指针move语义,移动构造,移动赋值第三方库使用,网络部分...

2019-11-14 19:27:40 111

原创 设计模式-模板方法

模板方法,通过继承的手段进行接口封装。即基类中使用接口,推迟于子类中实现class BaseEx{public: virtual void fun_A() = 0; virtual void fun_B() = 0; // 推迟于子类中实现 void startFun();};class Cus:public BaseEx{ void fun_A...

2019-03-26 14:21:29 99

原创 设计模式-策略模式

策略模式,通过组合的手段将接口进行封装。即,将抽象接口使用于组合类中。// 策略 抽象类class Strategy{public: virtual void startRun() = 0;};class SmartPolicy:public Strategy{ void startRun() override;};class SillyPolicy:public...

2019-03-26 14:08:53 99

原创 设计模式-单例模式

单例:保证一个类只能有一个实例,并提供一个全局唯一的访问有以下特征:它有一个指向唯一实例的静态指针,并且是私有的;它有一个公有的函数,可以获取这个唯一的实例,并且在需要的时候创建该实例;它的构造函数是私有的,这样就不能从别处创建该类的实例。class DataBase{private: DataBase(); static DataBase* m_pInst...

2019-03-26 13:43:47 108

原创 设计模式-工厂模式

工厂模式,用于解决对象的构造问题,即new的执行者常见的有:简单工厂:单个工厂,多种产品,拓展时对工厂类进行修改;需要知道产品类型工厂方法:多个工厂,每个工厂生产一种产品,需要知道那个工厂抽象工厂:多个工厂,每个工厂可生产不同的产品,如下,即抽象工厂// 产品1class Cpu{public: virtual void startWork() = 0;}...

2019-03-26 13:27:52 100

原创 二分查找-冒泡排序

// 折半查找 二分查找void mid_find(int *p, int left, int right, int find){ if(left > right) { qDebug() << "no item"; return; } int mid = (right+left) / 2; int m...

2019-03-26 10:24:50 122

转载 正则实用

原文:http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html正则表达式

2019-03-25 16:42:37 72

原创 c++11

delete.override.委托构造函数class Base {public: Base() {} // 禁用拷贝构造函数 Base(Base const &other) = delete; // 禁用赋值操作 Base& operator = (Base const &other) = delete; virt...

2019-03-18 18:02:02 128

原创 sizeof

DESCsizeof是个用于计算内存占用的运算符。注意:编译期间决定其大小,不同的操作系统位数反馈的大小不同。 涉及字节对齐。sizeof,strlen const char *pstr = "sGood"; char strA[] = "sGood"; char strB[20] = {'s','G','o','o','d'}; char s...

2019-03-18 16:12:14 132

原创 C++ 单向链表

杂长时间使用比较高级的语法,较与链表这种基本操作也只是略知。虽然是基本操作,但是code时还是出现了错误。最终还是那句话,脑子不够强大,链表还是要手画。codeclass MyNode {public: int data; MyNode *next; MyNode(int _data) { data = _data; next = nullptr; }};...

2019-03-18 14:13:49 144

原创 khala-Study

目录瓢MAP码一码瓢最近,看了下khala部分源码,对于c++的特性觉得甚是神奇,再次记录一笔,大致画了个瓢。MAP如上,大致关系。基本原理:每个对象拥有一个map维护自身函数。码一码typedef std::function&lt;bool(int &amp;, QString &amp;, int)&gt; RegisterMessageCallBa...

2019-03-06 17:53:24 364

原创 STL

STL,算法部分// 测试数据typedef struct _data{ bool good; int num; QString desc; _data(bool b = false, int n = 0, QString s = "") { num = n; good = b; desc = s; ...

2019-02-28 16:23:14 115

原创 Qt-MVC架构

目录杂何为just do itCareQes杂Qt可作为数据可视化的一种解决方案。对此,常用的就是mvc架构了。较与常规wiget填充展示数据层次更加清晰。何为具体看下图数据源:首先我们需要定制适合的数据结构,用个容器进行包裹即可src_model:对于不同的view需要不同的model,我们对应继承并重写相关方法即可proxy_model...

2019-02-28 13:13:30 1171

原创 Qt-虚拟键盘

杂开发过程中,查阅大量关于虚拟键盘的使用,其中最容易的是使用Qt自带的输入法,但是此法受制于人。其做法int main(int argc, char *argv[]){ // 环境 qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); QApplication a(argc, argv); ....

2019-02-27 15:46:10 3366 2

原创 Vs-调试主进程启动的其他进程

开发过程中,高度模块化,我们也许会采用多进程模式。其基本结构:/** * mian.exe 主进程,嵌入otherexe和helpexe * otherexe.exe 进程1 * helpexe.exe 进程2 *.....**/如上,那么如何实现在vs中调试这三个exe呢,作为宇宙第一的IDE当热可以为你办到。...

2019-02-25 10:56:49 1729

原创 Qt-窗口嵌套exe

某些特殊场景,我们要在主程序中嵌套第三方程序。这样臃肿的设计好比,在乡村小楼里面建设一个商业广场,本人不是很喜欢。Qt的QProcess和QWindow可以为我们完成这样的任务,核心思路即QProcess启动第三方exe,获取进程ID winApi通过进程ID获取窗口句柄 QWindow::fromWinId(WId id)创建window window代理的widget,即我们常见的Q...

2019-02-22 14:51:35 2203

原创 动态库生成与使用

杂目录杂创建主工程:创建动态库工程:主工程使用动态库库一般分为两种:静态库(.a 、.lib)动态库(.so 、.dll )所谓静态、动态是指链接过程。 动态链接的基本思想:把程序按照模块拆分成各个相对独立的部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不同于静态链接把所有的程序模块都链接成一个单独的可执行文件。本篇介绍win下动态库的生成和使用。我们统...

2019-02-21 14:13:15 256

原创 Qt-EventLoop

之前,对于eventLoop的理解即while(1){},在某些效果上,的确生效。于是与对其认知,阻塞等待。但是,while(1)这样的死循环,一堵所有,惨无人道,在Qt开发中不建议使用,因为某时刻出现错误,而且有损于Qt的事件驱动机制。为了更好的阻塞,建议使用eventLoop。对于,Qt的应用框架,存在app-&gt;exec(),然而,当我们使用dialog等exec()时,实则开启...

2019-02-19 16:22:42 1761

原创 Qt-日志输出

为了方便进行现场调试,我们需要使用日志记录我们关心的数据信息,而Qt提供了日志系统非常方便,只需要我们提供一个函数指针即可,定义如下void myMessageHandler(QtMsgType, const QMessageLogContext &amp;, const QString &amp;);通常,实现如下void outputMessage(QtMsgType type,...

2019-02-18 15:15:10 551

原创 QTcp-心跳

心跳机制,大致实现两中,心跳发起的主动方为谁,server或client。其基本思路,是在一定时间间隔内模拟server和client的通信。所以,这就比一般通信多了时间属性,而非随意进行交互。这里,我们将client作为主动方,其过程如下:client连接server成功后,即开始心跳, 定时器,定时向server发送,并内置计数,当计数大于一个定值即判断为掉线, server收到心跳请...

2019-02-18 14:14:36 2291

原创 Qt-ThreadPool

闲谈前几篇,说了Qt线程的最常见的QThread和偷懒的QtConcurrent,这两者使用的场景是不同的,前者更具有交互型,后者独立。对于QtConcurrent这种高级API如何让他发挥极致呢,我们就要用到QThreadPool和完美的QEventLoop,当然C++11就是最强搭档。在实践中,再次体会到Qt的事件驱动框架,以及信号和槽。可以这样说:谈及Qt的线程,线程工作与卡槽中。本篇是...

2019-01-25 16:52:08 470

原创 python-列表推导式

python,更亲近的自然语言,写python代码就像说话。python学习过程中,列表用的最为广泛,我们在向列表填充元素时,常规做法就是函数赋值,但是有更自然的方法,那就是伟大的列表推导式。列表推导式大致样式:list = [x for x in data if condition] list = [exp1 if condition else exp2 for x in data...

2019-01-24 12:14:04 215

原创 Qt-Plugin-Care

闲谈上篇介绍了Qt插件的代码化开发过程,其过程更像动态库加载。这次着重讲讲Qt对于designer的插件的拓展支持。QDesignerCustomWidgetInterface使用过程中遇到诸多挫折,最要命的的是第一步:我们自定义插件所用的编译器和QtCraetor编译器是否一致。整个开发过程确定QtCraetor的编译器是什么版本,你要用到的Designer的编译版本。【要命】 定...

2019-01-23 15:24:58 143

原创 Qt-Plugin

目录闲谈一步一步回首闲谈插件经常听说,但是关于制造一个插件,如何制造,如何使用便是要解决的。但是,在这之前,就为什么使用插件说说我的见解。说实话,自己还百科下,大致理解解耦等意思,代价是,没事找事(因为功能完全可以实现,而且,可选的路子也挺多),回报是,新的事务。当然这样的理解着实搞笑,权当在此记录相关。一步一步插件接口的定义:其实就是一个抽象对象,Q_DECLARE_...

2019-01-22 16:44:17 400

原创 namespace

近期,接触了namespace,在该作用域下实现回调的注册。自己对namespace的理解有误,导致编译出现各种错误,又或者在给他人调用时,出现未定义声明等各种问题。最终,还好定位到问题:对于namespace下的变量声明定义理解有误。我们通常在.h文件中声明各种变量,在.cpp文件中实现它,于是乎,我们这样下了代码:// water.h// 第一次namespace Water...

2019-01-18 15:17:17 164

原创 model with qml

目录闲谈c++部分qml中使用闲谈Qt的model/view框架使得data和show进行了分离,且对应的view有适配的model,view层面的继承和model层面的继承刚好对应。但是,我们常常需要定制view所需的子控件,这就要使用delegate。在widget中,还是比较麻烦的,更好的继承QStyledItemDelegate,重写Reimplemented Pu...

2019-01-11 10:14:44 240

原创 Qt-QtConcurrent

QtConcurrentHigh-level APIs that make it possible to write multi-threaded programs without using low-level threading primitives本次简单的使用Qt的Concurrent的线程相关,对其理解就是个开辟一个独立的线程,任务型的线程,结束任务即结束。QtConcurr...

2019-01-11 09:09:26 560

原创 Qt-打印机

在项目开发过程中,涉及到打印机的使用,很幸运,Qt的打印机模块printsupport的支持是的打印简单些。在查询打印模块的类时,体会到Qt的对于这种硬件的结构层次的封装,数据库等类结构也是如此。我的见解如下,提供custom core和widget。coreQPrinterInfo,对已存在的打印机的封装。 QPrinter,打印的执行体。widgetQPrintDialog...

2019-01-09 15:08:26 1552

原创 Qt-串口

一次调试转台设备时,需要用到串口调试,便使用了Qt的serialport模块。这里记录下,pro QT += serialport  关键,设备的结束符,eg:本次调试的设备为:"\r\n" 常规初始化基本没问题class SerPort:public QObject{ Q_OBJECTpublic: SerPort(QString portName,QObject...

2019-01-03 16:37:02 300

原创 tcp-数据包

我们往往使用tcp协议传输数据,都会自定义一个包裹,本次分享下对包的理解,其基本结构如下:在发送端,我们只需要将完整的包裹一次发送出去即可,eg // 字节 QByteArray bytes; PackageInfo info; info.exUse_int = 1000; info.exUse_char = '1'; ...

2019-01-03 16:00:27 266

原创 QTcp

本次分享下关于QTcp*的使用。我们的服务端为客户端发送图片。服务端,继承QTcpServer,重写incomingConnection方法。一个线程,一个map来管理客户端的socket描述符。 重写incomingConnection,从源头获取客户端的套接字描述符实现如下:class CusTcpServer:public QTcpServer{ Q_OBJECT...

2019-01-03 14:53:09 692

原创 Qt signal-slot

Qt的信号和槽机制,使得两个对象可以进行交互。得益于Qt的元对象系统,可以在Qt的help中查找The Meta-Object System,它告诉我们如何使用该系统,进而使用信号和槽以及属性系统。来自Qt help 文档The meta-object system is based on three things:1.The QObject class provides a base ...

2019-01-03 13:28:48 600

原创 Qt-Src-PrivateHide

Qt的源码结构甚是神奇,一堆宏,充分体现高效的设计,将面向对象进行到底。关于封装,本次了解到一个类的稀有成员如何隐藏。先看下普通的一个类,class CusData:public QObject{ Q_OBJECTpublic: CusData(QObject *parent = nullptr); ~CusData(); void setData(int ...

2019-01-02 14:17:06 338

原创 Qt Opengl-QOpenGLTexture-3D

关于纹理,可以理解为图像数据,在2D纹理中,就是将一张图像盖在模型上,模型中空;至于3D纹理,就可以解释为若干张图像,在通俗讲就是多维数组,多层切片的实体。 纹理坐标,x轴水平向右,y轴垂直向上,z轴朝向屏幕内,可以看作是3维坐标下的第一象限的单元格。 纹理贴图,可以理解为,断续的顶点数据和多维数据建立一个map(这是我们常规理解,当然也可以是纹理到顶点的map)一个矩形上贴一个图片,如下:...

2018-12-29 14:35:53 2219

原创 Qt Opengl-widget-practice

这次我们将实践,实现一个线条。在z=0的平面绘制两条相交直线。效果如下:首先,我们做一个Ui,class OpenglShow : public QOpenGLWidget,protected QOpenGLFunctions{ Q_OBJECTpublic: explicit OpenglShow(QWidget *parent = nullptr); ...

2018-12-29 13:36:46 515

原创 Qt Opengl-widget-base

Qt当前的opengl的模块封装,只需要gui,widgets两大模块。而quick中,quick模块中的QQuickItem和QQuickWindow。本节先说widget,QOpenglWidget为我们提供显示的ui,可当传统的widget使用,需要我们处理其opengl初始化,绘制,resize,当然也可方便使用传统widget的其他事件。class OpenglWidget...

2018-12-29 09:53:51 302

空空如也

空空如也

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

TA关注的人

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