我有一个工作示例,它使用信号和插槽在Qt共享库(dll)和Qt应用程序之间进行通信。我的问题是,这是首选的方式,还是有更好的方式来处理qt共享库。以下是详细信息:在Qt共享库和Qt应用程序之间使用信号和插槽
我开发的应用程序具有侦听网络上的设备和更新GUI的功能。共享库处理侦听网络上的设备,Qt应用程序模块处理GUI部分。
我有使用Q_DECL_EXPORT/Q_DECL_IMPORT导出共享库和应用程序使用的公用类的宏。这个公共类是从QObject派生的,并定义了Qt信号和时隙。这个公共类被构建为共享库(dll)的一部分。
Qt的应用程序加载在编译时的共享库和用于公共类创建一个实例,并使用该实例以建立Qt应用程序和Qt共享库模块之间的信号和时隙,如下所示:
Qt的期间应用程序初始化:
// Create shared libray API class instance to access dll module features.
mp_sharedlib_api = new shareLibAPIClass(this);
后来在Qt应用程序:
// Connect signal/slot between shared library and Qt application
connect(
mp_sharedlib_api , SIGNAL(SignalUpdateGUIStatus(QString)),
this, SLOT(SlotUpdateGUIStatus(QString))
);
这是d的正确方法开发一个使用共享库的Qt项目?共享库的API文档包含哪些内容? API文档是否列出了共享库发送/处理的信号和插槽?
在此先感谢。
我想你忘记了Qt本身就是一个共享库。那么为什么你会认为信号和共享库可能会有问题呢? –