分类: 小记

30 篇文章

C++使用大小括号初始化变量
本文对普通变量、普通类对象在初始化时使用()和{}的情况进行区分说明,以免混淆不清。 一般使用()是使用构造函数初始化,使用{}是使用列表初始化,如下。 1. 基本初始化(略过) 这里大概对基本初始化方式做一个归纳 1.1 默认初始化 即只声明,让其调用默认构造函数。 对于基本变量类型(如int、double...),只声明就不会定义具体的初始值。…
Qt设置窗口置顶(避免窗口隐藏)
方法一 说在前面:本方法比较通用,但经过我的使用,发现其存在问题,而下面方法二正常使用 存在问题:在窗口置顶后,会自动隐藏,即便在设置窗口置顶后手动对窗口使用show()或setVisible(true)等方法显示出来,也会出现窗口闪烁的现象,极不自然。 对你的主窗口QMainWindow或者主控件QWidget使用以下方法,都是Qt自带的。 窗口…
跨线程connect传参的错误
最近在使用connect连接信号与槽并且传参的时候,报了如下错误: QObject::connect: Cannot queue arguments of type 'QMap<int, QString>' (Make sure 'QMap<int, QString>' is regi…
关于vtkSmartPointer和vtkNew
1.前言 这两者的区别大家应该都知道,至于为什么我想写这一篇小记,主要是以前几乎不用vtkNew,最近想用一用,然后在不经意间出现了如下报错: error: C2280: “vtkNew<vtkImageData>::vtkNew(const vtkNew<vtkImageData> &)”: 尝试引用已删除的函数 …
vtkPolyData序列化
1. 使用vtk提供的格式转换方法 以XML格式为例: vtk库中支持多种格式的读写转换,比如利用XML格式,可以将vtkPolyData格式序列化为string类型,直接使用vtk库中的 vtkXMLPolyDataWriter 方法进行序列化 ,以及 vtkXMLPolyDataReader 方法解序列化。 示例: // 读vtkPolyDat…
C++优化程序的Tips
1. 避免创建过多中间变量 过多的中间变量不利于代码的可读性,还会增加内存的使用,而且可能导致额外的计算开销。 将用于同一种情况的变量统一管理,可以使用一种通用的变量来代替多个变量。 2. 函数中习惯使用引用传参而不是返回值赋值 常有的一种情况是,需要使用函数进行计算或处理数据,并通过其返回值获得结果。 对于简单的计算或处理,直接使用返回值返回结果…
将VTK窗口添加到QT窗口
使用QT中QVTKOpenGLNativeWidget搭配VTK中vtkGenericOpenGLRenderWindow是目前(VTK版本在9.0之上)最简单最好用的方法 QVTKOpenGLNativeWidget可以理解为QT中单独为VTK设计的载体控件,但只适用于VTK9.0及以上版本,QVTKOpenGLNativeWidget继承于QO…
VTK使用Render()渲染窗口的相关问题
1. VTK更新数据但窗口不更新 问题:在对窗口内的数据进行更新后,VTK窗口不会立即更新,需要鼠标等交互后才会更新。 解决办法:对数据更新后,对VTK窗口也要使用Render()渲染更新。 2. vtkRenderWindow渲染窗口报错 问题:在对vtkRenderWindow对象使用Render()渲染更新时会出现程序假死、或报内存溢出等错误…
解决vcpkg使用VS2022报错问题
最近,在把Visual Studio2019完全更新到最新Visual Studio2022后,原使用的vcpkg无法正常安装包,会报如下与Visual Studio 2022相关的错误: error: in triplet x64-windows-mixed: Unable to find a valid Visual Studio instan…
解决VTK不显示的问题
最近自己重配VTK环境时,才发现在缺少初始化语句时会导致在VTK环境和代码正确的情况下,不能正常输出,即不显示窗口、模型等,就如同代码被跳过了一样。 在包含头文件处添加以下代码: #include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2) VTK_MODULE_IN…