CloudCompare学习-添加菜单
VS+QT入门学习,记录学习过程。
1、打开mainWindow.ui,添加CSFFilter菜单
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);
void MainWindow::doActionCSFFileter()
{
}
2.4在 void MainWindow::enableUIItems(dbTreeSelectionInfo& selInfo) 函数中添加代码,选中点云时,enable菜单
m_UI->actionCSFFilter->setEnabled(atLeastOneCloud);
3、添加对话框UI
3.1新建一个dialog,保存为CSFFilterDialog.ui
运行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”
3.3手动添加一个类,project——class Wizard
基类 QDialog,ccCSFFilterDlg.h, ccCSFFilterDlg.cpp 参照 ccNoiseFilterDlg.h 和 ccNoiseFilterDlg.cpp 修改 .h文件和.cpp文件
编译报错:
error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall Widget::metaObject
F:\CloudCompare-rebuild\qCC>moc ccCSFFilterDlg.h -o moc_ccCSFFilterDlg.cpp
将生成的moc文件添加到源文件里。
4、为void MainWindow::doActionCSFFileter() 函数体添加代码
在 mainwindow.cpp里面 添加
#include "ccCSFFilterDlg.h"
函数体内添加
void MainWindow::doActionCSFFileter()
{
ccCSFFilterDlg CSFDlg(this);
if (!CSFDlg.exec())
return;
}