在解决方案文件夹下有一个src文件夹,里面是各个项目的源代码。进入ApplicatinGUI文件夹(整个路径为GeometryProcessing-1\src\ApplicationGUI)可以看到有很多以.ui为后缀的文件,这些文件就是UI设计文件。在安装了qt的电脑上双击可打开。如下图为主窗口:
为了添加自己的代码,在菜单栏新加入了一个菜单MyTest,并为其添加子菜单find_neighbors
在\GeometryProcessing-1\src\ApplicationGUI\GeneratedFiles\ui_geometryMainWindow.h,下会自动(不记得是不是自己添加的了。。)注册刚刚的按钮
也就是代码中,action_Find_neighbors就是我们刚刚的Find_neighbors按钮的名称
我们在\GeometryProcessing-1\src\ApplicationGUI\MenuProcessor.cpp中为按钮设置监听事件,将名为find_neighbors()函数作为点击按钮后的处理函数
在\GeometryProcessing-1\src\ApplicationGUI\MenuProcessor.h中定义一个名为find_neighbors()函数
在MenuProcessor.cpp文件中实现该函数
在上述实现函数中,我们调用了一个同样名为find_neighbors的函数(这个函数声明在 GeometryProcess\SceneInterface\SceneInterface.h中,
名字可以自己定义,但是为了规范,可以和菜单处理cpp中命名保持一致。
其定义如下:
在SceneInterface.cpp中实现上述函数
同样,我们又调用了一个和发起调用的函数同名的函数,但是这个被调用的函数的声明是在我们自己添加的项目中的
完成类的编写后,更新这个函数体如下
需要注意的是,需要在SceneInterface.h头文件中包含TestMyProject.h
接下来,在VS解决方案中添加自己的项目,即在已有的解决方案中创建新的项目,具体操作如下图,注意规范项目的放置位置
同时注意项目的属性,如果建立的是一个空项目,则最后会出现一些链接的问题。正确的建立方式如下
下面就可以为自己的项目添加代码了。
头文件内容如下,定义我们调用最底层的函数
在对应的.cpp文件中实现头文件中定义的函数
在ApplicationGUI设置为启动项目的前提下,右键点击ApplicationGUI项目,选择属性,依次点击"框架和引用" à "添加新引用"
然后可以看到添加后的引用比没添加之前多了一项。
重新生成解决方案时,出错,错误提示:找不到GeometryProcessing-1\src\qtpropertybrowser-2.5_1-opensource\qtproptybrowser.lib,这是将qtpropertybrowser项目转换为qt add-in project,再生成这个工程,之后就可以生成整个解决方案了。
此外,运行这个工程最后调出的是一个窗口,其设置是在启动工程下的属性中设置的,如果要调出控制台,则可以更改"子系统"设置
比如,我们希望打开一个模型后,点击MyTest下的Find_Neighbors按钮后,程序在控制台输出一个hello world。
至此完成了从建立按钮到处理按钮对应事件的整个流程。