CloudCompare学习-添加菜单

VS+QT入门学习,记录学习过程。

1、打开mainWindow.ui,添加CSFFilter菜单

CloudCompare学习-添加菜单

2、添加源码

2.1在ui_mainwindow.h中的class Ui_MainWindow类中添加public成员变量

QAction *actionCSFFilter;


2.2在mainwindow.h 中添加函数声明

void doActionCSFFileter();    //add


2.3在mainwindow.cpp中添加关联和函数体

connect(m_UI->actionCSFFilter,                  &QAction::triggered, this, &MainWindow::doActionCSFFileter);  

CloudCompare学习-添加菜单

void MainWindow::doActionCSFFileter()
{




2.4在 void MainWindow::enableUIItems(dbTreeSelectionInfo& selInfo) 函数中添加代码,选中点云时,enable菜单

m_UI->actionCSFFilter->setEnabled(atLeastOneCloud);    


3、添加对话框UI

3.1新建一个dialog,保存为CSFFilterDialog.ui

CloudCompare学习-添加菜单

运行Cmd,进入CSFFilterDialog.ui所在的文件夹,执行命令uic CSFFilterDialog.ui -o ui_CSFFilterDialog.h,生成 ui_CSFFilterDialog.h文件。

(参考:http://blog.****.net/sdau20104555/article/details/42360329和

http://blog.****.net/dongzhe8/article/details/51559924)


3.2 为对话框添加一个类 ,提示信息 “It is impossible to add a QtGuiClass to the current project, as it was not created using Qt5VSAddin”

CloudCompare学习-添加菜单CloudCompare学习-添加菜单


3.3手动添加一个类,project——class Wizard

CloudCompare学习-添加菜单CloudCompare学习-添加菜单

基类 QDialog,ccCSFFilterDlg.h, ccCSFFilterDlg.cpp  参照  ccNoiseFilterDlg.h 和 ccNoiseFilterDlg.cpp 修改 .h文件和.cpp文件

编译报错:

error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject

参考:http://blog.****.net/zhenyusoso/article/details/8450906

cmd 进入ccCSFFilterDlg.h的目录下,输入命令:

F:\CloudCompare-rebuild\qCC>moc ccCSFFilterDlg.h -o moc_ccCSFFilterDlg.cpp

将生成的moc文件添加到源文件里。

CloudCompare学习-添加菜单

4、为void MainWindow::doActionCSFFileter() 函数体添加代码

在 mainwindow.cpp里面 添加 

#include "ccCSFFilterDlg.h"   

函数体内添加

void MainWindow::doActionCSFFileter()
{
ccCSFFilterDlg CSFDlg(this);


if (!CSFDlg.exec())
return;