QT文件选项控件打开文件时重复弹出
最近在学习PCL点云处理,遇到一个小问题,做个小记录。
问题:在打开ply文件时总是弹出两次对话框
原因:button控件在转槽函数时connect了一次,而在初始化时又重复connect,如下代码删除连接即可。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <iostream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));删除这里
cloud.reset(new pcl::PointCloud<pcl::PointXYZ>);
cloud_2.reset(new pcl::PointCloud<pcl::PointXYZ>);
viewer.reset(new pcl::visualization::PCLVisualizer ("viewer", false));
viewer->addPointCloud(cloud, "cloud");
ui->qvtkWidget->SetRenderWindow (viewer->getRenderWindow());
viewer->setupInteractor(ui->qvtkWidget->GetInteractor(), ui->qvtkWidget->GetRenderWindow());
ui->qvtkWidget->update();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open PointCloud"), ".",
tr("Open PLY files(*.ply)"));
std::string file_name = fileName.toStdString();
if (pcl::io::loadPLYFile(file_name, *cloud) == -1) { // 读取.ply文件
cerr << "can't read file bunny.pcd" << endl;
}else{
viewer->updatePointCloud(cloud, "cloud");
viewer->resetCamera();
ui->qvtkWidget->update();
}
}
明天把点云的加载和处理再完善一下。