Interface in C++ for Qt
Interface in C++ for Qt
我的问题是,我的接口可以从QObject继承,如何做到这一点?好吧,我知道c++中的接口只是包含虚方法的类,通常一个类可以继承超类。但如果我这样做,我得到一个错误,由于模棱两可的QObject引用。我需要继承QObject添加信号/插槽功能到我的插件。
我的界面
#ifndef LABELINTERFACE_H
#define LABELINTERFACE_H
#include <QLabel>
#include <QObject>
class LabelInterface : public QObject {
public :
virtual ~LabelInterface() {}
virtual QLabel* newLabel() = 0;
public slots:
virtual void setLabelText() = 0;
};
Q_DECLARE_INTERFACE (LabelInterface,"com.stefan.Plugin.LabelInterface/1.0")
#endif // LABELINTERFACE_H
插件头文件
#ifndef LABELPLUGIN_H
#define LABELPLUGIN_H
#include "labelinterface.h"
class LabelPlugin : public LabelInterface
{
Q_OBJECT
Q_INTERFACES(LabelInterface)
public:
QLabel* label;
QLabel* newLabel();
LabelPlugin() {}
~LabelPlugin() {}
public slots:
void setTextForLabel();
};
#endif // LABELPLUGIN_H
实现文件
#include <QtGui>
#include "labelplugin.h"
QLabel* LabelPlugin::newLabel() {
label = new QLabel("This plugin works");
return label;
}
void LabelPlugin::setTextForLabel() {
label->setText("This plugin works fine");
}
// Exporta plugin-ul
Q_EXPORT_PLUGIN2 (labelplugin,LabelPlugin)
I get error
labelplugin.cpp:18: error: cannot allocate an object of abstract type ‘LabelPlugin’
忘记实现
virtual void setLabelText() = 0;
你实现
void setTextForLabel();
是不是打错字了?要实例化一个类,需要在基类中重写并实现所有纯虚方法。因为您没有这样做,所以您的类仍然是抽象的。
相关文章:
- 如何在 qt for windows 中使用 QAxObject 创建 docx 和 doc 文件?
- 我可以在不使用Qt for Webassembly的情况下使用Emscripten编译Qt吗?
- Qt QML for Android bugs
- Qt for wasm: 错误: 使用未声明的标识符 'QThreadPool'
- C++编译Qt for Visual Studio 2017的问题
- Vtk 图表在 QT 中突破,"no override found for 'vtkContextDevice2D"
- Qt::CustomizeWindowHint and Qt::Tool analogs for gtkmm
- 在 qt 控制台应用程序中未定义对 'vtable for myObj' 的引用 - 信号和插槽
- Qt for Android:Jni - 不幸的是,应用程序已停止
- 在 Qt 中使用 for 与 OpenCV3 时出错
- QT 单元测试 moc "unresolved external symbol" for QMetaObject
- QT for Embedded Linux VNC Server 是否已启用互联网
- mysql driver for qt database fedora
- 在QT for Windows中使用Win32 API
- Qt for iOS:需要代码签名
- 什么是Qt for boost::p romise<T>?
- 如何在Qt for Embedded Linux中定位和使用字体
- 在Qt for Maya中检测视网膜屏幕
- Compile Qt for Beaglebone Black
- Preparing Qt for Windows