在Qt GUI主窗口上嵌入PCL Viewer

时间:2013-04-17 17:04:31

标签: qt point-cloud-library

我正在尝试在Windows 7 64位计算机上使用QtCreator开发用户界面。此用户界面将部署在32位Windows 7计算机上,并将控制投影仪和相机以用于结构光应用程序。由于我无法控制的原因(与相机和投影仪的API兼容),我将使用MS VS 2010 32位编译器。经过几个星期的努力,我需要一起工作(Qt 4.8.4,QtCreator和Point Cloud Library),我现在面临一个小问题。

有没有办法可以将PCL Point Cloud Viewer嵌入到我的主要Qt GUI窗口中?问题是,当我使用PCL查看器时,它会显示一个单独的窗口。我希望这个窗口嵌入到我的主窗口中,我希望仍然可以与它进行交互(旋转,平移,缩放等)。

正如您可能从我的帖子中说出的那样,我是Qt / PCL /等的新手,所以任何使用最少代码执行此操作的示例都将非常感激。我已经对此进行了数周的研究,但我无法找到解决方案,尽管我觉得Qt Widget可能是最佳选择。

2 个答案:

答案 0 :(得分:4)

您可以通过PCLVisualizer简单地使用广泛描述here的PCL QVTKWidget。这是我目前正在运行的设置。所以你最终会按照以下(伪)代码的方式做一些事情:

在标题中:

class PointCloudWidget : public QVTKWidget
{
    //Whatever comes before (constructor, methods, etc.)

private:

    pcl::visualization::PCLVisualizer m_visualizer;
};

在你的cpp中:

PointCloudWidget::PointCloudWidget(QWidget *parent) : QVTKWidget(parent)
{
    this->SetRenderWindow(m_visualizer.getRenderWindow());
}

然后,您可以使用可视化工具实现与PCL查看器相同的功能。

答案 1 :(得分:0)

查看我放置here (PCL Viewer with Qt GUI minimal code)的最小代码类型。 有一些冗余,但我相信代码非常简单。

主要思想是将文件放在一个文件夹中,然后从CMakeLists.txt(Qt cmake向导)启动项目。

我在项目目录中使用build目录。 (这很重要,因为在pclwindow.cpp我硬编码了生成文件的路径#include "build/ui_pclwindow.h"

如果app构建,但崩溃你可能需要添加一些依赖项(例如Win平台上的dll文件)

我希望它会给你快速而简单的开始!