Qt和VTK等一些编程技巧

1.Qt的槽函数尽量写在初始创建对象(Widget、Dialog等)中。若写在其他函数中,由于逻辑处理不当,容易引起槽函数多次connect,这样会带来一些意想不到的错误(多次connect会导致原本执行一次的函数由于发送了多个信号,从而槽函数莫名其妙执行了多次,切记)。

2.Qt中设置对话框(Dialog)的模态和非模态时,如果在构造函数中未进行设置,而在程序中间需要进行修改模态/非模态状态时,单纯使用this->setModal(true)或this->setModal(false)修改,不会产生任何作用。需要作如下修改:

this->hide();
this->setModal(bool);
this->show();
即:需要先隐藏窗口,修改模态,再显示,才会起作用的。

3.Qt中如果要保存悬浮工具栏的状态,可以使用QMainWindow中的函数saveGeometry()和saveState()来保存主窗口布局,具体详见 这里

4.Qt可通过rcc命令将各类资源文件(图片、翻译文件、xml等)生成二进制文件。首先编写“.qrc”文件,将需要转化为二进制文件的文件写到“resource.qrc”文件中,形式:

<RCC>
    <qresource prefix = "Seven">
        <file>image.png</file>
     </qresource>
</RCC>
完成qrc文件的编写后,在Qt控制台下切换到当前含qrc文件的目录,执行命令:

rcc -binary resource.qrc -o output.rcc
完成之后,需在程序中(main函数)添加:

QResource::registerResource("路径");

5.Qt允许信号和槽的参数数目不一致,但信号的参数数目要多于槽函数。

6.VTK中的vtkExtractVOI提取感兴趣区域时,得到的结果不再和vtkImageData一样可以通过GetScalarPointer(i, j, k)获取单个像素值,使用这种方法时,总是内存泄漏,不可用。可通过如下方式获取像素值:

vtkExtractVOI *voi = vtkExtractVOI::New();
voi->SetInputData(image);
voi->SetVOI(xmin, xmax, ymin, ymax, zmin, zmax);
voi->Update();

char* data = (char*)voi->GetScalarPointer();

for(int i = 0; i < size; i++) //size 为提取区域图像的像素个数
{
    int p = data[i];
    std::cout << p << std::endl;
}






















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值