#ifndef DLLS_H #define DLLS_H #include <ActivityInterface.h> class MyWidget; class Dlls: public QObject, public ActivityInterface { Q_OBJECT Q_PLUGIN_METADATA(IID "ActivityInterface") Q_INTERFACES(ActivityInterface) public: Dlls(QObject* parent = nullptr); public: int id() const override; QString name() const override; QWidget* widget() const override; void initialize(const QString&) override; private: MyWidget* m_widget; }; #endif // DLLS_H
时间: 2024-03-27 12:37:51 浏览: 61
【C/C++】#ifndef,#define用法
根据你提供的代码,可能出现问题的地方是 `ActivityInterface` 的定义。
请确保在 `ActivityInterface` 的头文件中添加了 `Q_DECLARE_INTERFACE` 宏,例如:
```cpp
class ActivityInterface {
public:
virtual ~ActivityInterface() {}
virtual int id() const = 0;
virtual QString name() const = 0;
virtual QWidget* widget() const = 0;
virtual void initialize(const QString&) = 0;
};
Q_DECLARE_INTERFACE(ActivityInterface, "ActivityInterface/1.0")
```
如果你已经添加了 `Q_DECLARE_INTERFACE` 宏,请检查它的参数是否正确。第一个参数应该是接口的名称,第二个参数应该是版本号。在 `Dlls` 类中使用的 `Q_PLUGIN_METADATA` 宏应该匹配这些参数。
如果这些都没有解决问题,请提供更多的上下文和错误信息,以便更好地协助你解决问题。
阅读全文