07 2020 档案

摘要:一、例子 1、例子1:基本使用 import QtQuick 2.0 import QtCharts 2.2 Rectangle { id: root property string info: "info" color: "#000C3C" width: 600; height: 400; fun 阅读全文
posted @ 2020-07-30 11:37 朱小勇 阅读(5957) 评论(2) 推荐(0)
摘要:一、环境准备 1、安装Qt的时候需要勾上chart 2、.pro QT += charts 3、添加头文件 #include <QtChar 二、在ui里拖一个widget过去 三、代码 1、mainwindow.h声明一个饼图 QPieSeries *series;//饼图相关 2、mainwin 阅读全文
posted @ 2020-07-29 17:07 朱小勇 阅读(590) 评论(0) 推荐(0)
摘要:bool GetMinK(unsigned int uiInputNum, int * pInputArray) { bool ret = true; for(int i=0;i<uiInputNum;i++) { for(int j=0;j<uiInputNum-1-i;j++) { int tm 阅读全文
posted @ 2020-07-28 09:30 朱小勇 阅读(251) 评论(0) 推荐(0)
摘要:1、新建需要执行的脚本 phm_reboot.sh #!/bin/sh # echo "myroot" |sudo -S sudo su echo "begin to start phm shell...................." echo "start service.......... 阅读全文
posted @ 2020-07-27 14:13 朱小勇 阅读(381) 评论(0) 推荐(0)
摘要:在linux里使用matlab访问mysql的时候,报标题错,通过查看连接的具体message得到具体错误信息,这个错误信息就是没有JDBC的驱动,使用以前的笔记即可解决 https://www.cnblogs.com/judes/p/12167237.html 阅读全文
posted @ 2020-07-20 16:41 朱小勇 阅读(2075) 评论(0) 推荐(0)
摘要:gg : 跳转到文件头 Shift+g : 跳转到文件末尾 行数+gg : 跳转到指定行,例跳转到123行:123gg 阅读全文
posted @ 2020-07-20 15:09 朱小勇 阅读(443) 评论(0) 推荐(0)
摘要:该关键字告诉编译器,函数中不会发生异常,这有利于编译器对程序做更多的优化。如果在运行时,noexecpt函数向外抛出了异常(如果函数内部捕捉了异常并完成处理,这种情况不算抛出异常),程序会直接终止,调用std::terminate()函数,该函数内部会调用std::abort()终止程序。 举例: 阅读全文
posted @ 2020-07-14 09:42 朱小勇 阅读(273) 评论(0) 推荐(0)
摘要:一、项目介绍 1、主要为了在此小型测试项目中用到几乎所有ctk的常用知识: 插件间通信、服务工厂、服务追踪、事件监听、框架封装 2、项目共包含3个插件日志插件:用于模拟将接收的信息存储到日志中【这里只做简单的打印】,并且能够接收信息【主要来自界面插件】 打印插件:根据不同的插件返回提供不同打印服务 阅读全文
posted @ 2020-07-11 22:03 朱小勇 阅读(4462) 评论(1) 推荐(2)
摘要:定义模板函数的时候,如果声明和定义不同时在h就会这样报错,需要都定义在头文件里 阅读全文
posted @ 2020-07-11 14:15 朱小勇 阅读(1036) 评论(0) 推荐(0)
摘要:1、返回宏 #ifndef USE_QT_PRINT #define PRINTF_LOCATION() std::cout<<"ret in:" << __FILE__ << " at:"<<__LINE__ << std:: endl #else #define PRINTF_LOCATION( 阅读全文
posted @ 2020-07-10 15:16 朱小勇 阅读(362) 评论(0) 推荐(0)
摘要:一、简介 服务追踪:如果想在B插件里使用A服务,可以专门写一个类继承ctkServiceTracker,在这个类里完成对A服务的底层操作,然后在B插件里通过这个类提供的接口来使用回收A服务。 注意ctkServiceTracker和A服务应该是一起的,这里有点像服务工厂。优点就是获取服务的代码简单, 阅读全文
posted @ 2020-07-10 10:36 朱小勇 阅读(1077) 评论(1) 推荐(0)
摘要:const_cast:仅用于去掉完全同类型的const,volatile约束,不能含有任何其它类型的转换,若不含约束也可以相当于没转换static_cast:使用类型可在继承的方向上向上或向下转换,不进行安全检查。 子类转父类,值、引用、指针形式均可,其中指针还可以是常量 父类转子类,值不可以,引用 阅读全文
posted @ 2020-07-09 16:20 朱小勇 阅读(206) 评论(0) 推荐(0)
摘要:关闭有道词典。。。。。。。。。 阅读全文
posted @ 2020-07-09 15:04 朱小勇 阅读(486) 评论(0) 推荐(0)
摘要:CTK一共有三种事件可以监听:框架事件、插件事件、服务事件。但是这些事件只有再变化时才能监听到,如果已经变化过后,进入一个稳定的状态,这时才去监听,那么是无法监听到的。 1、监听接口 主要是ctkPluginContext提供的三个函数: 2、如何使用 可以新建一个专门的服务,专门用于监听CTK的事 阅读全文
posted @ 2020-07-09 10:28 朱小勇 阅读(1167) 评论(1) 推荐(0)
摘要:1、作用 在服务中可以知道是哪个其他插件在使用它; 懒汉式使用服务,需要的时候才new; 厂其他插件使用有服务工厂和使用无服务工的服务,没有任何区别,代码都一样; 可根据需要创建多种实现的服务,就是:多种服务对应一个插件。 2、用打印插件举例 提供三种服务,分别是:直接打印、打印后加3个点、加上时间 阅读全文
posted @ 2020-07-05 04:02 朱小勇 阅读(930) 评论(1) 推荐(0)
摘要:1、Q_UNUSED 如果一个函数的有些参数没有用到、某些变量只声明不使用,但是又不想编译器、编辑器报警报,就Q_UNUSED(name),其他没有什么实际性作用。 2、Q_DISABLE_COPY 在类定义时使用,代表此类禁止被拷贝或赋值: class A{ pubilc: A(); privat 阅读全文
posted @ 2020-07-05 02:23 朱小勇 阅读(2072) 评论(0) 推荐(0)
摘要:QHash<QString, QString> headers = plugin->getHeaders(); ctkVersion version = ctkVersion::parseVersion(headers.value(ctkPluginConstants::PLUGIN_VERSION 阅读全文
posted @ 2020-07-05 02:18 朱小勇 阅读(425) 评论(0) 推荐(0)
摘要:假设A是一个接口类,有一个析构函数是~A;然后B类继承并实现了了A,有一个析构函数~B。内存释放有如下几种情况: 1、A的析构函数是虚函数,父指针或子指针指向子对象 virtual ~A(){} A* a = new B;//或者B* a = new B;delete a; 释放顺序是~B,~A。因 阅读全文
posted @ 2020-07-05 01:23 朱小勇 阅读(915) 评论(0) 推荐(0)
摘要:1、接口类中的Q_DECLARE_INTERFACE 此宏将当前这个接口类声明为接口,后面的一长串就是这个接口的唯一标识。 2、实现类中的Q_INTERFACES 此宏与Q_DECLARE_INTERFACE宏配合使用。 Q_DECLARE_INTERFACE:声明一个接口类 Q_INTERFACE 阅读全文
posted @ 2020-07-03 11:28 朱小勇 阅读(548) 评论(0) 推荐(0)
摘要:零、概述 1、通信主要用到了ctkEventAdmin结构体,主要定义了如下接口: postEvent:类通信形式异步发送事件 sendEvent:类通信形式同步发送事件 publishSignal:信号与槽通信形式发送事件 unpublishSignal:取消发送事件 subscribeSlot: 阅读全文
posted @ 2020-07-03 10:52 朱小勇 阅读(4248) 评论(0) 推荐(0)
摘要:方式1:使用ctk框架工厂,适用于调用普通的插件 ctkPluginFrameworkFactory frameworkFactory; QSharedPointer<ctkPluginFramework> framework = frameworkFactory.getFramework(); / 阅读全文
posted @ 2020-07-03 09:41 朱小勇 阅读(1852) 评论(0) 推荐(0)
摘要:1、 问题: 可以确定环境没有任何问题,但是一运行就这样。 解决: 删掉这个文件夹 2、 在编写插件添加资源文件的过程中,有些教程说前缀需要和工程名一致。经过测试,不是和工程名一致,而是与生成的dll名字一致,也就是TARGET 其他地方,如工程名、 MANIFEST.MF里的符号,都是随便取。 3 阅读全文
posted @ 2020-07-02 19:57 朱小勇 阅读(2342) 评论(2) 推荐(0)
摘要:如何实现依赖 在MANIFEST.MF里,加入元对象: Require-Plugin: FirstPlugin; plugin-version="[0.5,2.0)"; resolution:="mandatory" FirstPlugin:为需要依赖的插件名【就是另一个插件在MANIFEST.MF 阅读全文
posted @ 2020-07-02 17:19 朱小勇 阅读(1022) 评论(0) 推荐(0)
摘要:0、概述 编写插件主要有3个步骤:接口类、实现类、激活类。根据前面写的入门插件【https://www.cnblogs.com/judes/p/13220386.html】,总感觉很难理解,为什么还要在实现类的构造函数里注册服务呢,我们肯定希望把3个步骤的耦合性降低,接口类就只做接口声明,实现类就只 阅读全文
posted @ 2020-07-02 17:12 朱小勇 阅读(882) 评论(0) 推荐(0)
摘要:0、概念 接口就是纯虚函数类,也就是最终的服务的前身; 插件就是实现这个接口类的实现类,所以理论上有多少个实现类就有多少个插件。注意每个插件都有自己的注册器Activator; 服务就是根据接口的实例,每生成一个服务就会调用一次注册器的start。 一句话总结就是:把接口当做类,服务是根据类new出 阅读全文
posted @ 2020-07-01 18:14 朱小勇 阅读(1367) 评论(0) 推荐(0)
摘要:一、生成插件 0、环境说明 编译ctk:Qt5.12.2+MSVC2017_64+Cmake 生成插件:Qt5.12.2+MSVC2017_64+qmake 1、服务类,纯虚类,提供接口 abslogservice.h #ifndef ABSLOGSERVICE_H #define ABSLOGSE 阅读全文
posted @ 2020-07-01 17:25 朱小勇 阅读(2243) 评论(0) 推荐(0)
摘要:在.pro中: CONFIG += c++11 阅读全文
posted @ 2020-07-01 12:02 朱小勇 阅读(1116) 评论(0) 推荐(0)
摘要:1、在很多库经常看到这样的写法: B.h: class A; class B{ A a; } 2、原因 因为在B的头文件的需要用到A,但是又不想在B的头文件中include这个A.h【可能为了避免重复包含头文件】,只在B.cpp中include了A.h,就可以这样声明一个class A在这里,让代码 阅读全文
posted @ 2020-07-01 11:59 朱小勇 阅读(803) 评论(0) 推荐(0)