Qt QCommandLineOption类
摘要:QCommandLineOption类定义了可能的命令行选项 头文件: #include <QCommandLineOption> cmake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRI
阅读全文
posted @
2023-07-26 13:37
一杯清酒邀明月
阅读(196)
推荐(0) 编辑
Qt QCommandLineOption、QCommandLineParser
摘要:QCommandLineOption一、描述此类用于描述命令行的选项。 二、类型成员1、enum QCommandLineOption::Flag HiddenFromHelp:在用户可见的帮助输出中隐藏此选项。默认情况下,所有选项都可见。为特定选项设置此标志使其成为内部选项,即不在帮助输出中列出。
阅读全文
posted @
2023-07-26 13:33
一杯清酒邀明月
阅读(462)
推荐(0) 编辑
Qt 解析命令行(QCommandLineOption和QCommandLineParser类)
摘要:Qt从5.2版开始提供了两个类QCommandLineOption和QCommandLineParser来解析应用的命令行参数。 一、命令行写法命令行:"-abc" 在QCommandLineParser的解析模式为ParseAsCompactedShortOptions(默认)时会被认为是3个参数
阅读全文
posted @
2023-07-26 13:26
一杯清酒邀明月
阅读(714)
推荐(0) 编辑
Qt Cannot retrieve debugging output报错 (无法获取调试输出.)
摘要:我们在QT中有时会遇到Cannot retrieve debugging output报错,无法利用qDebug输出内容,原因是开了两个qt软件,这是需要我们把其中一个qt软件关了,然后在唯一的qt中打开项目,放心,一个窗口仍然可以运行两个程序。
阅读全文
posted @
2023-07-24 14:14
一杯清酒邀明月
阅读(935)
推荐(0) 编辑
VTK 问题整理
摘要:1)问题 解决:#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkInteractionStyle);VTK_MODULE_INIT(vtkRenderingFreeType); 2)问题
阅读全文
posted @
2023-07-21 16:25
一杯清酒邀明月
阅读(463)
推荐(0) 编辑
VTK 9.2 Qt 5.14 安装及错误处理
摘要:安装注意:编译release和debug,通过切换配置为release和debug,文件都是在cmake的CMAKE_INSTALL_PREFIX指定的文件夹,需要编译完一种后,把这个文件夹改名(比如debug配置,则改名为debug),不然会覆盖。 在Qt项目中,出现错误:“无法解析的外部符号__
阅读全文
posted @
2023-07-21 16:23
一杯清酒邀明月
阅读(166)
推荐(0) 编辑
VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT
摘要:下载VTK安装包 在VTK官网 Download | VTK 中下载VTK9.1.0待编译源码,解压后在路径Documentation/dev/bulid.md中可以看到官方提供的Prerequisites以及简易教程 编译环境安装 按照官方提供的Prerequisites,安装以下环境: CMak
阅读全文
posted @
2023-07-21 16:19
一杯清酒邀明月
阅读(1254)
推荐(1) 编辑
C++ %的使用
摘要:两种意思:1、格式化字符串输出2、整数取余 1、目前printf支持以下格式的输出,例如:printf("%c",a);输出单个字符。printf("%d",a);输出十进制整数。printf("%f",a);输出十进制浮点数.printf("%o",a);输出八进制数。printf("%s",a)
阅读全文
posted @
2023-07-21 16:12
一杯清酒邀明月
阅读(1399)
推荐(0) 编辑
如何在word中输入定义符号(即等号上面一个三角形)
摘要:方法如下: 1、打开word。 2、点击插入—》符号—》其它符号。 3、选择字体:MS UI Gothic,子集:数字运算符。 4、选择符号,插入,完成。
阅读全文
posted @
2023-07-18 15:02
一杯清酒邀明月
阅读(1221)
推荐(0) 编辑
QT 定时器QTimer::singleShot()用法
摘要:用法如下: 1 //参数:(定时时间,接受者,槽函数) 2 QTimer::singleShot(1000,this,[=]{ 3 //想要执行的代码 4 qDebug() << "hello world" ; 5 });
阅读全文
posted @
2023-07-18 10:36
一杯清酒邀明月
阅读(265)
推荐(0) 编辑
Qt Q_GLOBAL_STATIC创建全局静态对象
摘要:概述 所谓的全局静态对象,大多是在单例类中所见,之前写过一篇文章介绍如何实现一个单例类,在这里,这是最常见的方式来进行创建,需要自定义 static 类对象, 并进行手动初始化。而今天要说的是更简单的方式来实现,Qt 提供了一个非常方便的宏Q_GLOBAL_STATIC,可以快速创建全局静态对象。
阅读全文
posted @
2023-07-18 10:34
一杯清酒邀明月
阅读(249)
推荐(0) 编辑
Qt 单例模式:本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性
摘要:单例模式 很多人洋洋洒洒写了一大堆 但是Qt本身就提供了专门的宏 Q_GLOBAL_STATIC 通过这个宏不但定义简单,还可以获得线程安全性。 rule.h 1 #ifndef RULE_H 2 #define RULE_H 3 4 class Rule 5 { 6 public: 7 stati
阅读全文
posted @
2023-07-18 10:29
一杯清酒邀明月
阅读(146)
推荐(0) 编辑
Qt 专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式
摘要:Qt本身就提供了专门的宏 Q_GLOBAL_STATIC。通过这个宏不但定义简单,还可以获得线程安全性。 1、先看官方文档 https://doc.qt.io/qt-5/qglobalstatic.html https://doc.qt.io/qt-5/threads-reentrancy.html
阅读全文
posted @
2023-07-18 10:26
一杯清酒邀明月
阅读(250)
推荐(0) 编辑
医学图像 DCMTK、VTK、ITK、RTK、SimpleITK等
摘要:1.ITK-医学图像处理软件包 ITK( Insight Segmentation and Registration Toolkit)是美国国家卫生院下属的国立医学图书馆开发的一款医学图像处理软件包,是一个开源的、跨平台的影像分析扩展软件工具。 ITK的开发过程中采用了先进的多模态数据分割配准算法,
阅读全文
posted @
2023-07-13 14:57
一杯清酒邀明月
阅读(2042)
推荐(0) 编辑
SimpleITK 获取二值图像bbox
摘要:1 sitk_ seg_ img = sitk . ReadImage( m ) 2 bbox =get_ bbox_ from mask(sitk_ seg_ _img) 3 4 def get_bbox_from_mask(bin_mask): 5 # One is : sitk.LabelSh
阅读全文
posted @
2023-07-13 14:54
一杯清酒邀明月
阅读(80)
推荐(0) 编辑
ITK 分割后处理,填补孔洞
摘要:深度学习分割结果可能有误分割的部分,包括孔洞、赘余、多连通域等。下面的例子是孔洞的样例。 常识告诉我们,这个器官内部是没有孔洞的,因此,我们通过后处理的方法把它填上,可以提高分割准确度。 这种三维孔洞,我们希望有一种便捷方法,可以直接填补这种三维孔洞。可以使用 SITK 的二值孔洞填补方法。 sit
阅读全文
posted @
2023-07-13 14:53
一杯清酒邀明月
阅读(135)
推荐(0) 编辑
SimpleITK 重采样数据到固定尺寸
摘要:1、resampleSize这个重采样不是重采样Spacing ,却是重采样size,为了达到所有的数据一致的size 例如:(880, 880, 12) 采样统一的(880,880,16) 因为假如3DUnet网络数据设置了输入格式为(N, C, 16, xxx,xxx), 可以把每个数据的siz
阅读全文
posted @
2023-07-13 14:42
一杯清酒邀明月
阅读(759)
推荐(0) 编辑
ITK 高斯混合模型 GMM EM
摘要:1、高斯混合模型 sklearn.mixture是一个能够学习高斯混合模型、抽样高斯模型和从数据中估计模型的包。同样,也提供了帮助决定正确组件数量的方法。 一个高斯混合模型是一个概率模型,它假设所有的数据点是从有限未知参数的高斯分布的混合生成的。可以将混合模型当作泛化的k均值聚类,以融合关于数据协方
阅读全文
posted @
2023-07-13 14:39
一杯清酒邀明月
阅读(84)
推荐(0) 编辑
ITK 旋转方向位置不变
摘要:这个表达式看起来就是点的平移公式。 1 # -*- coding : UTF-8 -*- 2 # @file : resample_change_direction.py 3 # @Time : 2022-02-14 16:19 4 # @Author : wmz 5 import os 6 imp
阅读全文
posted @
2023-07-13 14:37
一杯清酒邀明月
阅读(44)
推荐(0) 编辑
ITK 计算 EuclideanDistance
摘要:1、代码 1 #include "itkImage.h" 2 #include "itkImageFileReader.h" 3 #include "itkSignedMaurerDistanceMapImageFilter.h" 4 5 #include "itksys/SystemTools.h
阅读全文
posted @
2023-07-13 14:35
一杯清酒邀明月
阅读(46)
推荐(0) 编辑
ITK 计算质心
摘要:通过LabelGeometryImageFilter可以求Label Image各个区域的质心和BoundingBox。然而,如果图像的spacing不是1,它并不会考虑进去,因此得到的结果并未我们所愿的。针对这个问题,有人实现了相关的模块(itkOBBLabelMap),可以解决这个问题,将其添加
阅读全文
posted @
2023-07-13 14:33
一杯清酒邀明月
阅读(69)
推荐(0) 编辑
ITK 基于C++和ITK获取3D医学图像的最大连通区域
摘要:1、代码 1 #include "itkConnectedComponentImageFilter.h" 2 #include "itkImage.h" 3 #include "itkImageFileReader.h" 4 #include "itkImageFileWriter.h" 5 #in
阅读全文
posted @
2023-07-13 14:31
一杯清酒邀明月
阅读(477)
推荐(0) 编辑
ITK cmake 添加多个基于ITK的可执行文件
摘要:1、CMakeLists.txt 1 cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 2 project(testfilter) 3 set(ITK_DIR D:/ProgramFiles/ITK-5.2/lib/cmake/ITK-5.2) 4 5
阅读全文
posted @
2023-07-13 14:29
一杯清酒邀明月
阅读(45)
推荐(0) 编辑
ITK 连通域分析
摘要:连通域 一个区域D中,任一闭曲线所围区域,都属于区域D,称为“单连通区域”。 连通域形状分析 创建二值图像 1 using ImageType = itk::Image<unsigned char, 2>; 2 3 ImageType::Pointer CreateMaskImage() 4 { 5
阅读全文
posted @
2023-07-13 14:28
一杯清酒邀明月
阅读(300)
推荐(0) 编辑
ITK 最大圆度连通域提取
摘要:最大圆度概念:圆度计算(Circularity,Roundness) 1 Roundness = (4 * CV_PI * Area) / (Perimeter * Perimeter ) 2 double getRoundness(std::vector<cv::Point> contour) 3
阅读全文
posted @
2023-07-13 14:24
一杯清酒邀明月
阅读(155)
推荐(0) 编辑
SimpleITK 图像配准
摘要:SimpleITK 图像配准 在网上找的资源,效果不佳,等清楚了函数和原理再细改,调试效果。 1 # -*- coding : UTF-8 -*- 2 # @file : regist.py 3 # @Time : 2021-11-12 17:00 4 # @Author : wmz 5 6 imp
阅读全文
posted @
2023-07-13 14:16
一杯清酒邀明月
阅读(354)
推荐(0) 编辑
SimpleITK 三维图像分析
摘要:1、去除3D 小连通域 在一些计算机视觉任务中,需要对模型的输出做一些后处理以优化视觉效果,连通域就是一种常见的后处理方式。尤其对于分割任务,有时的输出mask会存在一些假阳(小的无用轮廓),通过3D连通域找出面积较小的独立轮廓并去除可以有效地提升视觉效果。 二维图像连通域一般包括 4连通、8连通。
阅读全文
posted @
2023-07-13 14:13
一杯清酒邀明月
阅读(336)
推荐(0) 编辑
SimpleITK 读写nii.gz文件
摘要:1、读写nii.gz文件 1 ## using simpleITK to load and save data. 2 import SimpleITK as sitk 3 itk_img = sitk.ReadImage('./nifti.nii.gz') 4 img = sitk.GetArray
阅读全文
posted @
2023-07-13 14:10
一杯清酒邀明月
阅读(278)
推荐(0) 编辑
SimpleITK 图像对齐
摘要:1、使用SimpleITK对齐图像在看voxelmorph的代码,看到图像对齐部分,记录一下。下面是从voxelmorph项目中截取的一段保存图像的函数。函数输入分别是:配准后的图像、固定图像、要将配准图像保存的名字。将图像对齐的操作需要将对齐的图像的原点、方向、间距设置成与 被对齐的图像一致。 1
阅读全文
posted @
2023-07-13 14:06
一杯清酒邀明月
阅读(239)
推荐(0) 编辑
NRRD批量转换成NIFTI
摘要:3D slicer, MITK默认会将医学图像保存为格式为NRRD的图像,但是我们还是习惯于操作NIFTI格式的数据,于是就有了NRRD转换成NIFTI的需求。 之前自己有一个比较笨的方法,就是将NRRD图像导入到MITK软件中,然后再另存成NIFTI的数据。如果数据少,还可以接受。但是当数据比较多
阅读全文
posted @
2023-07-13 11:41
一杯清酒邀明月
阅读(116)
推荐(0) 编辑
ITK 简单使用
摘要:第一个ITK程序 1、CMakeLists.txt 1 # This is the root ITK CMakeLists file. 2 cmake_minimum_required(VERSION 3.10) 3 4 # This project is designed to be built
阅读全文
posted @
2023-07-13 11:36
一杯清酒邀明月
阅读(231)
推荐(0) 编辑
SimpleITK 读取医学影像文件
摘要:SimpleITK ITK是一个开源、跨平台的框架,提供给开发者增强功能的图像分析和处理套件(推荐使用)。 Note:注意SimpleITK不支持中文,即路径中不能有中文 X射线图像对应的读取 1 # @file : itk_p1.py 2 # @Time : 2021/8/28 16:27 3 #
阅读全文
posted @
2023-07-13 11:30
一杯清酒邀明月
阅读(199)
推荐(0) 编辑
VTK vtkImageReslice
摘要:三维图像切面提取 切片(Slice)或切面是三维图像比较常用的概念,尤其在医学图像中。通过提取切面可以方便地浏览和分析图像内部组织结构。VTK中vtkImageReSlice类可以实现图像切面的提取。在实际开发中,四视图中冠状视面、矢状面和横断面(显示过图像内部一点且平行于XY、YZ、XZ平面的平面
阅读全文
posted @
2023-07-13 11:14
一杯清酒邀明月
阅读(489)
推荐(0) 编辑
VTK 生成MIP图像-vtkImageSlabReslice类
摘要:MIP MIP(Maximum/Minimum Intensity Projection),最大/最小密度投影重建。 MIP可以较真实地反应组织密度差异,使得血管的异常改变、形态、走形强化;但是只适用于外观形态的显示。 在容积扫描数据中对每条径线上每个像素的最大强度值进行编码并投射成像。MIP的灰阶
阅读全文
posted @
2023-07-13 11:09
一杯清酒邀明月
阅读(474)
推荐(0) 编辑
Qt QJsonDocument以及与QJsonArray、QJsonObject、QJsonValue的关联
摘要:0、说明 QJsonDocument类提供了read/write JSON文档的方法。 用QJsonDocument::fromJson()方法,可以从将一个JSON文件(或者QByteArray数据)转换为QJsonDocument,用QJsonDocument::toJson()则能起到相反的用
阅读全文
posted @
2023-07-11 14:43
一杯清酒邀明月
阅读(1123)
推荐(0) 编辑
Qt QJsonValue
摘要:0、说明 QJsonValue类用于操作JSON中的各种数据。 JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool double QJsonValue::Double string QJsonValue::String
阅读全文
posted @
2023-07-11 14:37
一杯清酒邀明月
阅读(482)
推荐(0) 编辑
3D Slicer 设置中文界面
摘要:下载并安装最新的 3DSlicer 预览版(2023 年 5 月 17 日之后发布) 安装 SlicerLanguagePacks 扩展。 从主菜单栏选择 “View(视图)”,然后选择 “Extension Manager(扩展管理器)”,打开扩展管理器对话框。 在扩展管理器对话框中,您可以看到可
阅读全文
posted @
2023-07-10 16:31
一杯清酒邀明月
阅读(2516)
推荐(0) 编辑
Qt QSplitter拆分器
摘要:1.简介 QSplitter拆分器允许用户通过拖动子部件之间的边界来控制它们的大小。 单个拆分器可以控制任意数量的小部件。QSplitter的典型用法是创建几个小部件,并使用insertWidget()或addWidget()添加它们。 2.常用方法 默认情况下,QSplitter会动态调整其子元素
阅读全文
posted @
2023-07-10 16:12
一杯清酒邀明月
阅读(400)
推荐(0) 编辑
设计模式之类之间的关系和六大原则
摘要:1 类之间的关系 类与类之间的关系大概有6种,要看懂UML图,首先需要了解这几种关系。 1.1 继承关系 继承指的是一个类(称为子类,子接口)继承另外的一个类(成为父类,父接口)的功能,并可以增加它自己的新功能的能力。在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口
阅读全文
posted @
2023-07-07 15:27
一杯清酒邀明月
阅读(129)
推荐(0) 编辑
C++ 设计模式之抽象工厂模式
摘要:设计模式之抽象工厂模式 抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。其UML图如下: 结合上图我们来理解一下抽象工厂模式的定义。提供一个创建一些列相关或相互依赖对象的接口,而无需指定它们具体的类。在上图中一系列相互依赖或相关的对象可以理解为ProductA,Pr
阅读全文
posted @
2023-07-07 15:00
一杯清酒邀明月
阅读(66)
推荐(0) 编辑
C++设计模式之观察者模式
摘要:设计模式之观察者模式 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。其UML图如下: 在ConcretSubject内部有一个Observer的列表,当Subject的状态发生改变时,会通知列表内
阅读全文
posted @
2023-07-07 14:57
一杯清酒邀明月
阅读(45)
推荐(0) 编辑
C++ 设计模式之建造者模式
摘要:设计模式之建造者模式 建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 其UML图如下: 简单理解就是Builder中定义了创建Product各个部分的接口。ConcreteBuilder中具体实现了创建Product中的各个部分的接口,就是具体的建造者。Dir
阅读全文
posted @
2023-07-07 14:55
一杯清酒邀明月
阅读(86)
推荐(0) 编辑
C++ 设计模式之外观模式
摘要:设计模式之外观模式 外观模式主要是为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得该子系统更加容易使用。说白了就是一堆系统或类实现了些复杂的功能,然后为了方便使用,又新建了一个类把这些类实现的功能封装起来了。该模式不难理解。其UML图如下: 在Facade类提供了一堆调
阅读全文
posted @
2023-07-07 14:53
一杯清酒邀明月
阅读(28)
推荐(0) 编辑
C++ 设计模式之模板方法模式
摘要:设计模式之模板方法模式 模板方法模式,定义一个操作中的算法的股价,而将一些步骤延迟到了子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。说白了就是有一个算法有很多部分,这个算法在基类中已经定义好了。而算法中的各个部分都写成各个成员函数了。然后在子类中可以覆盖这些成员函数
阅读全文
posted @
2023-07-07 14:49
一杯清酒邀明月
阅读(51)
推荐(0) 编辑
C++ 设计模式之原型模式
摘要:设计模式之原型模式 原型模式是用原型实例指定创建兑现的种类,并且通过拷贝这些原型创建新的对象。原型模式说白了其实就是有一个把自己拷贝一下的方法。该模式很好理解,该模式独特地方不是类与类之间的关系,更多的是从语义上理解,只是实现了一个接口而已。 其UML图如下: 示例代码如下: 1 // Protot
阅读全文
posted @
2023-07-07 14:10
一杯清酒邀明月
阅读(75)
推荐(0) 编辑
C++ 设计模式之工厂方法模式
摘要:设计模式之工厂方法模式 工厂方法模式,定义一个用于创建对象的接口,让子类决定实力化哪一个类。工厂方法使一个类的实例化延迟到其子类。其UML图如下: 这里要区分一下工厂方法模式与简单工厂模式的区别。简单工厂模式需要在工厂类中判断要生产什么类型的对象。工厂方法模式则把这部分工作交给了客户端。每一种类对象
阅读全文
posted @
2023-07-07 14:05
一杯清酒邀明月
阅读(27)
推荐(0) 编辑
C++ 设计模式之装饰模式
摘要:设计模式之装饰模式 装饰模式,动态地给一个对象添加一些额外的职责(不一定重要的功能,只是偶然一次执行),就增加功能来说,装饰模式比生成子类更为灵活。其UML图如下: ConcreteComponent定义了一个具体的对象,ConcreteDecorator类是用来装饰ConcreteComponen
阅读全文
posted @
2023-07-07 14:03
一杯清酒邀明月
阅读(57)
推荐(0) 编辑
C++ 设计模式之策略模式
摘要:设计模式之策略模式 策略模式定义算法家族,分别封装。它们之间可以相互替换,让算法变化,不会影响到用户。优点:适合类中的成员方法为主,算法经常变动;简单了单元测试(因为每个算法都有自己的类,可以通过自己的接口单独测试)。缺点:客户端需要做出判断。 其UML图如下: 策略模式和简单工厂模式非常相似。具体
阅读全文
posted @
2023-07-07 14:01
一杯清酒邀明月
阅读(276)
推荐(0) 编辑
C++ 设计模式之状态模式
摘要:设计模式之状态模式 状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了类本身。状态模式主要解决的时当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。其UML图如下: 在以上UML图中,Conte
阅读全文
posted @
2023-07-07 13:59
一杯清酒邀明月
阅读(80)
推荐(0) 编辑
C++ 设计模式之适配器模式
摘要:设计模式之适配器模式 适配器模式,将一个类的借口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适配器模式主要解决的是数据和行为都正确,但接口不符合的情况。该模式很好理解,其UML图如下: 示例代码如下: 1 // AdapterModel.
阅读全文
posted @
2023-07-07 13:57
一杯清酒邀明月
阅读(20)
推荐(0) 编辑
C++ 设计模式之备忘录模式
摘要:设计模式之备忘录模式 备忘录,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。该模式很好理解,其UML图如下: 在Originator中提供了创建Memento的接口,具体要保存什么样的内容,则根据需求来定。而Caretaker则
阅读全文
posted @
2023-07-07 13:56
一杯清酒邀明月
阅读(94)
推荐(0) 编辑
C++ 设计模式之迭代器模式
摘要:设计模式之迭代器模式 迭代器模式,提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。该模式很好理解,C++中的迭代器应该都用过,和那个差不多。其UML图如下: ConcreteIterator内部有一个聚合对象的引用(指针),而ConcreteAggregate依赖于Concre
阅读全文
posted @
2023-07-07 13:54
一杯清酒邀明月
阅读(74)
推荐(0) 编辑
C++ 设计模式之访问者模式
摘要:设计模式之访问者模式 访问者模式,表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间耦合解脱开,使得操作几何可以相对自由地演化。访问者模式的目的使要把处理从数据结构中分
阅读全文
posted @
2023-07-07 13:51
一杯清酒邀明月
阅读(182)
推荐(0) 编辑
C++ 设计模式之解释器模式
摘要:设计模式之解释器模式 解释器模式,给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式解决的问题是,如果一种特定类型的问题发生的频率足够高,那么可能就只得将该问题的各个示例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些
阅读全文
posted @
2023-07-07 13:50
一杯清酒邀明月
阅读(67)
推荐(0) 编辑
C++ 设计模式之享元模式
摘要:设计模式之享元模式 享元模式,运用共享技术有效地支持大量细粒度的对象。面向对象技术可以很好地解决一些灵活性或扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。享元模式正式为了解决这依赖问题而诞生的。享元模式通过共享技术实现相同或相似对
阅读全文
posted @
2023-07-07 13:48
一杯清酒邀明月
阅读(147)
推荐(1) 编辑
C++ 设计模式之中介者模式
摘要:设计模式之中介者模式 中介者模式,用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式很好理解,其UML图如下: Mediator中每个交互者的引用,在Mediator内部封装了各种类之间的交互。至于那个类和那个类交合则
阅读全文
posted @
2023-07-07 13:46
一杯清酒邀明月
阅读(49)
推荐(0) 编辑
C++ 设计模式之责任链模式
摘要:设计模式之责任链模式 责任链模式,使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。该模式很好理解,其UML图如下: 每个ConcreteHandler都有一定的请求处理能力,当自己处理不了的时候就把请求转
阅读全文
posted @
2023-07-07 13:44
一杯清酒邀明月
阅读(68)
推荐(0) 编辑
C++ 设计模式之命令模式
摘要:设计模式之命令模式 命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其UML类图如下: 该模式主要是为了隔离请求和实际执行者之间解除。就是解耦和,所有的请求统一有一个类负责,而该类负责管理这些请求(添加请求、撤销请求之类的)
阅读全文
posted @
2023-07-07 13:40
一杯清酒邀明月
阅读(130)
推荐(0) 编辑
C++ 设计模式之桥接模式
摘要:设计模式之桥接模式 桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里说的实现分离,并不是说然抽象类与派生类分离,这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。其UML图如下: 结合上图理解一下其定义。抽象部分指的是Abstraction或者RefinedAbst
阅读全文
posted @
2023-07-07 13:37
一杯清酒邀明月
阅读(66)
推荐(0) 编辑
C++ 设计模式之单例模式
摘要:设计模式之单例模式 保证一个类仅有一个实例,并提供一个访问他的全局访问点。通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且可以提供一个访问该实例的接口。其UML图如下: 其示例代码
阅读全文
posted @
2023-07-07 13:34
一杯清酒邀明月
阅读(36)
推荐(0) 编辑
C++ 设计模式之组合模式
摘要:设计模式之组合模式 组合模式,将对象组合成属性结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。其UML图如下: 一个组织有很多子组织,而无论子组织是单独一个部门或是一个分组织。该组织都希望把它们当成一样的子组织来管理。举个例子吧,就拿公司来说吧,一个公司总部
阅读全文
posted @
2023-07-07 13:31
一杯清酒邀明月
阅读(61)
推荐(0) 编辑
C++ 设计模式之简单工厂模式
摘要:设计模式之简单工厂模式(C++) 简单工厂模式,主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。优点:适用于不同情况创建不同的类时。缺点:客户端必须要知道基类和工厂类,耦合性差。需要根据不同的需
阅读全文
posted @
2023-07-07 13:28
一杯清酒邀明月
阅读(51)
推荐(0) 编辑
代码的坏味道 《重构改善既有代码的设计》
摘要:1. Duplicated Code重复代码,在程序中多次出现的相同结构或功能的代码 同一个类中的两个函数含有相同的表达式 两个互为兄弟的子类中含相同的表达式 相互独立的类中出现相同表达式 2. Long Method 过长的函数难以理解及维护 段函数或间接层具有很强的解释能力、共享能力和选择能力
阅读全文
posted @
2023-07-07 11:56
一杯清酒邀明月
阅读(34)
推荐(0) 编辑
代码坏味道的变迁
摘要:2018年,Martin Fowler的《重构》第二版出版,距离第一版,已经19年了。为什么作者要出新版?通过分析两个版本的变化,可以探知端倪。这些变化,一方面体现了作者多年的思考和总结,另一方面也体现了技术潮流的演进。本文先从讨论坏味道的变迁开始。 《重构》第一版中有22种坏味道,第二版中有24种
阅读全文
posted @
2023-07-07 11:52
一杯清酒邀明月
阅读(61)
推荐(0) 编辑
代码的坏味道
摘要:代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。 1. 重复的代码 如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。 同一个class内的两个函数中含有重复的代码
阅读全文
posted @
2023-07-07 11:48
一杯清酒邀明月
阅读(48)
推荐(0) 编辑
C++ 代码重构的常用方法
摘要:代码重构的常用方法 (C++实现) 重构是在软件开发中改善已有代码的一种方法,通过代码重构可以改进软件的设计、使得软件更容易理解、有利于Bug的发现以及提高后续开发效率。Martin Fowler在《重构:改善既有代码的设计》一书中对“重构”提供了两种形式的定义: 重构(名词):对软件内部结构的一种
阅读全文
posted @
2023-07-07 11:17
一杯清酒邀明月
阅读(366)
推荐(0) 编辑
系统困境与软件复杂度,为什么我们的系统会如此复杂
摘要:一 前言 有一天,一个医生和一个土木工程师在一起争论“谁是世界上最古老的职业”。医生说:“上帝用亚当的肋骨造出了夏娃,这是历史上第一次外科手术,所以最古老的职业应该是医生”,土木工程师说:“在创世纪之前,上帝从混沌中创造了天堂与人间,这是更早之前的一次土木作业,所以最古老的职业应该是土木工程”。这时
阅读全文
posted @
2023-07-06 15:40
一杯清酒邀明月
阅读(83)
推荐(0) 编辑
Qt 插件框架的使用及优化
摘要:Qt插件框架是一种机制,可以让用户在应用程序运行时通过插拔的方式扩展其功能,并且不需要重新编译整个应用程序。它是一个强大的工具,可用于实现许多不同类型的应用程序和库。 模块化设计 - 通过将应用程序分为几个模块,您可以更轻松地管理和更新您的Qt插件。同时,模块化也有利于代码复用和维护性。 核心统一管
阅读全文
posted @
2023-07-06 15:06
一杯清酒邀明月
阅读(357)
推荐(0) 编辑
Qt 分层架构的使用和优化
摘要:Qt是一个跨平台的C++图形用户界面应用程序开发框架。它具有丰富的功能和灵活的分层架构,可帮助开发人员高效地构建可扩展的软件应用程序。以下是Qt分层架构的使用和优化的建议: 了解Qt的核心模块:Qt核心模块包括Qt核心、GUI、多媒体、网络和SQL等模块。开发人员应该深入了解每个模块的功能和API,
阅读全文
posted @
2023-07-06 15:06
一杯清酒邀明月
阅读(373)
推荐(0) 编辑
Qt 信号和槽机制的使用和优化
摘要:Qt信号和槽机制是Qt框架中非常重要的一部分,它可以帮助我们轻松地实现对象之间的通讯和交互。以下是一些使用和优化Qt信号和槽机制的建议: 熟悉信号和槽机制的基本原理:我们需要了解信号和槽机制的基本概念和工作原理。每个Qt对象都有一个QMetaObject类,其中包含该对象的所有属性、方法和信号/槽的
阅读全文
posted @
2023-07-06 15:05
一杯清酒邀明月
阅读(258)
推荐(0) 编辑
Qt 四种程序的架构设计方法
摘要:四种常见的关于Qt程序的架构设计方法: 1.使用MVC设计模式MVC是Model-View-Controller的缩写,是应用程序开发中常用的设计模式。在Qt中,可以使用QAbstractItemModel和QTreeView等类来实现MVC模式。 2. 使用信号和槽机制Qt中的信号和槽机制是一种灵
阅读全文
posted @
2023-07-06 15:05
一杯清酒邀明月
阅读(712)
推荐(0) 编辑
Qt qBreakPad使用(windows)
摘要:一、介绍 Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合。而且BreakPad本来就是为了解决C、C++异常捕获而开发的。BreakPad支持跨平台,很容易在Qt项目中使用,使跨平台的应用实现跨平台异常捕获。这里介绍一下qBreakPad的使用。 二、编译 步骤1、下载qB
阅读全文
posted @
2023-07-04 14:20
一杯清酒邀明月
阅读(986)
推荐(0) 编辑