2、Qt 插件开发方式
本文介绍VS中如何一个解决方案中含多个项目,以及像Qt一样使用ui指针(带ui的插件)
1、先创建Qt主软件项目。
2、再创建Qt插件项目:
解决方案处,鼠标右键—添加—新建项目,选择下图项目。
手动添加ui文件:
Plugin1项目处,鼠标右键—添加—新建筛选器,Form Files。(不是真实存在的文件夹,但是在VS里逻辑条理更清晰,下文以文件夹称呼)
Form Files文件夹处,鼠标右键—添加—新建项,plugin1.ui
3、创建接口
在项目路径里手动新建接口文件夹Interface,并在其中手动新建 interface1.h
引入到项目里,解决方案处,鼠标右键—添加—现有项,interface1.h
把下图文件夹名改为Interface(筛选器)
4、各种文件都有了,下面编辑文件。
参考博客
在插件类(父类)中声明函数—在接口类(子类)中实现函数。
可以直接访问我的git查看案例
5、生成插件dll
VS中Plugin1项目处,鼠标右键—生成。
把dll拷贝到主项目生成的exe路径里
推荐养成使用指针的习惯:
1、h文件中声明ui类指针
2、cpp文件的构造函数处初始化列表方式初始化ui
3、cpp文件的析构函数中释放new出的对象
h文件:
private: //带ui的插件,ui为类指针(必须new初始化,否则不会调用构造开辟内存,无法初始化ui_*.h中的对象) //当然,也可以不用类指针Ui::Plugin1Ui ui(这种方式会直接调用构造,开辟内存),其他地方直接“ui.成员” //推荐多用指针,虽然麻烦点。new的记得delete Ui::Plugin1Ui *ui;
cpp文件:
Plugin1::Plugin1():ui(new Ui::Plugin1Ui) //初始化列表中初始化ui,ui为类指针。 { } Plugin1::~Plugin1() //析构new出的对象 { delete ui; ui = nullptr; }