Vaa3D与Qt简要介绍(入门教程)
教程1:编译Vaa3D
分为在windows、mac、ubuntu等系统上编译。
原始教程
https://github.com/Vaa3D/Vaa3D_Wiki/wiki/Build-Vaa3D-on-Linux
https://github.com/Vaa3D/Vaa3D_Wiki/wiki/Build-Vaa3D-on-Windows-(VS2010-and-QMake)
编译时一些问题的教程
https://blog.****.net/jujiyu6446/article/details/84590792
https://blog.****.net/DOGIMA/article/details/89671537
教程2:认识Vaa3D
Vaa3D是开源项目,所有代码开源。基本的主界面不介绍了。
1.Vaa3d新建工程,打开pro文件后仅出现pro文件,不出现其他cpp和h文件,或者不能挑战,可以尝试以下方法。
https://blog.****.net/jujiyu6446/article/details/84798983
2.Vaa3d中神经元重建结果颜色对照图,NeuronTree的type所对应的颜色。
https://blog.****.net/jujiyu6446/article/details/85279601
3.vaa3d的源代码一般存在于 \v3d_external\v3d_main\v3d
教程3:认识Qt
QT是一个常用的编辑器。编写GUI程序非常方便、所见即所得。
Qt的一些特性可以注意一下,ui文件做的一些改动存储在两个不同的地方,1.槽函数的信号函数一般放在 xx.cpp。一些基本的定义放在ui_ xx.cpp,可通过该setupUi()函数跳转。如果对于界面有问题可以在该文件中寻找灵感。
对于每一个Qt自定义的控件,如PushButton,可以在ui界面查看有什么属性,我们可以选择自己需要的属性对应进行修改。
设置属性一般采用set开头的函数,获取则用get。
教程4:认识NeuronTree数据格式
NeuronTree一般存储为swc格式。两者可以互相转化。
NeuronTree包含两个主要的子元素。NeuronSWC代表swc文件中的一行。主要包括7项属性。一般第一个点的parent为-1
int I;
int type;
float x, y, z;
float radius;
V3DLONG parent;
QList <NeuronSWC> listNeuron;
QHash <int, int> hashNeuron;
当用于编辑时,一般先转换成my_surf_objs.cpp文件下定义的vector形式。
教程5:认识marker数据格式
Marker比NeuronTree更简单。主要包括10项。
##x,y,z,radius,shape,name,comment, color_r,color_g,color_b
补充知识1:局部变量与界面
当设计一个GUI类后,在插件中定义并使用时,可以认识是插件的domenu函数下的局部变量。如果不定义成指针形式,那么将会导致domenu运行完成后程序界面关闭。
同理,为不改变callback的值,如果想将变量传入类变量并保存,则需要采用引用或者指针的形式。
补充知识2:connect
Connect 意味着当信号源发出信号时,槽对象的槽函数将被对应的触发。要求是connect的槽对象需要第一个继承Qobject。
connect(score_slider, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanger(int)));
基本形式如下,仅需保留信号函数中的变量类型,不要保留变量名。
补充知识3:部分特性(BUG)
目前不能以非8位的形式存储tiff数据。如float等。但不会报错。