PCL点云之旅12 - 选点与QT进行交互

193 阅读1分钟

实现效果

image.png

步骤拆分

  1. 首先我们要使用到QT的表格控件
  2. 我们每次选点都要将点的信息添加到表格控件里面去
  3. 给表格控件添加按钮

代码实现

image.png

image.png

void MainWindow::inittable(pcl::PointXYZRGB current_point){
    std::cout<<current_point.x<<current_point.y<<current_point.z<<std::endl;
    int rowCount = ui->tableWidget->rowCount();
    point_pick_num++;
    QString kill_btn_name="killbtn"+QString::number(point_pick_num);
    QString point_x = QString::number(current_point.x);
    QString point_y = QString::number(current_point.y);
    QString point_z = QString::number(current_point.z);
    int curRow = ui->tableWidget->currentRow();
    qDebug() << curRow;
    int newRow = curRow + 1;
    ui->tableWidget->insertRow(newRow);
    int colCount = ui->tableWidget->columnCount();
    for(int col=0; col<colCount; col++){
        switch(col){
            // 插入ID属性
            case 0:{ QTableWidgetItem *it = new QTableWidgetItem(point_x);ui->tableWidget->setItem(newRow, col, it);break;}
            case 1:{ QTableWidgetItem *it = new QTableWidgetItem(point_y);ui->tableWidget->setItem(newRow, col, it);break;}
            case 2:{ QTableWidgetItem *it = new QTableWidgetItem(point_z);ui->tableWidget->setItem(newRow, col, it);break;}
            case 3:{
                QPushButton *killBtn=new QPushButton("取消选择");
                killBtn->setObjectName(kill_btn_name);
                ui->tableWidget->setCellWidget(newRow,col,killBtn);
                connect(killBtn, &QPushButton::clicked, this, deletePoint);
                break;
            }
        }


    }
}