网站要怎么做的,.name后缀的网站,南昌房地产网站建设,网站的运营与维护问题背景 使用Qt主程序插件的方式开发#xff0c;即主程序做成一个框#xff0c;定义好插件接口#xff0c;然后主程序上通过插件接口与插件进行交互。调试过程中遇到了两个问题#xff0c;在这里记录一下。 问题1#xff08;信号槽定义#xff09;
插件与主程序之间插件的方式开发即主程序做成一个框定义好插件接口然后主程序上通过插件接口与插件进行交互。调试过程中遇到了两个问题在这里记录一下。 问题1信号槽定义
插件与主程序之间首先要定义接口这个接口就是抽象的插件的基类所谓接口就是只定义了函数接口类型的纯虚函数没有任何实现和数据。 那么主程序和插件之间还需要通过信号与槽去交互这里就需要在插件里定义信号与槽函数但是这个信号与槽函数不能定义在接口类里面因为信号与槽和普通的函数不一样这里就有一个问题如果不在接口类里面定义信号与槽函数那么主程序与插件的类如何做信号与槽连接绑定 通过一下方式来解决接口类里面不用定义信号槽示例代码如下 QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));QObject *plugin pluginLoader.instance(); //实例化加载插件if (plugin) {echoInterface qobject_castEchoInterface *(plugin); //这里是转换为基类类型connect(plugin, SIGNAL(rcPlugin(QString)), this, SLOT(onPlugin(QString))); 使用这种信号槽的连接方式注意连接时是通过QObject 类型去连接的信号槽通过这种方式连接可以编译通过测试可以正常调用。通过下面的连接方式则不能通过
// connect(plugin, QObject::rcPlugin, this, EchoWindow::onPlugin); //编译报错if (echoInterface)return true;}
问题2 插件加载问题
写了一个测试的插件插件中用到了串口模块在Qtcreater环境中调试时主程序中可以正常调用加载插件但是编译好的主程序文件单独运行时就会提示无法加载插件这个问题也是查了好久发现是插件里引用了串口模块而主程序打包时没有把串口模块的dll文件加进来。