PCL点云之旅10 - 设置点云模型不同视角

285 阅读1分钟

实现效果

image.png

image.png

image.png

步骤拆分

  1. 首先我们要在左侧建立toolbarACTION
  2. 给action添加槽函数
  3. 槽函数改变不同的视角

代码实现

  • 槽链接
//***********************************初始化状态栏*******************************************//

    // 初始化左侧状态栏按钮
    QAction *upbtn = new QAction(this);
    upbtn->setIcon(QIcon(":/p1.png"));
    QAction *leftbtn = new QAction(this);
    leftbtn->setIcon(QIcon(":/left.png"));
    QAction *rightbtn = new QAction(this);
    rightbtn->setIcon(QIcon(":/right.png"));
    QAction *fontbtn = new QAction(this);
    fontbtn->setIcon(QIcon(":/font.png"));
    QAction *backbtn = new QAction(this);
    backbtn->setIcon(QIcon(":/back.png"));
    QAction *xbtn = new QAction(this);
    xbtn->setIcon(QIcon(":/Xaxis.png"));
    QAction *ybtn = new QAction(this);
    ybtn->setIcon(QIcon(":/Yaxis.png"));
    QAction *zbtn = new QAction(this);
    zbtn->setIcon(QIcon(":/Zaxis.png"));


    // 初始化左侧状态栏
    QToolBar *leftbar=new QToolBar("leftbar");
    addToolBar(Qt::LeftToolBarArea,leftbar);
    leftbar->setFloatable(false);
    leftbar->setMovable(false);
    leftbar->setOrientation(Qt::Vertical);
    leftbar->setAllowedAreas(Qt::LeftToolBarArea);
    leftbar->addAction(upbtn);
    leftbar->addAction(leftbtn);
    leftbar->addAction(rightbtn);
    leftbar->addAction(fontbtn);
    leftbar->addAction(backbtn);
    leftbar->addSeparator();
    leftbar->addAction(xbtn);
    leftbar->addAction(ybtn);
    leftbar->addAction(zbtn);
  • 槽函数
// camera positions
void MainWindow::camera_up(){
    viewer->setCameraPosition(-1,1,0,0,0,0,0,0,0);
    viewer->resetCamera();
    ui->qvtkWidget->update();
}
void MainWindow::camera_left(){
    viewer->setCameraPosition(0,0,-1,1,0,0,0,0,0);
    viewer->resetCamera();
    ui->qvtkWidget->update();
}
void MainWindow::camera_right(){
    viewer->setCameraPosition(0,0,0,0,-1,1,0,0,0);
    viewer->resetCamera();
    ui->qvtkWidget->update();
}
void MainWindow::camera_font(){
    viewer->setCameraPosition(-1,0,0,0,0,1,0,0,0);
    viewer->resetCamera();
    ui->qvtkWidget->update();
}
void MainWindow::camera_back(){
    viewer->setCameraPosition(0,0,0, 0, 0, -1, 0, 1, 0);
    viewer->resetCamera();
    ui->qvtkWidget->update();
}