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;  
}