當我嘗試返回值時,在我的smtdplugin實現文件中出現此錯誤。好吧,我明白我創建一個指向QAction的指針,當我嘗試返回它時,我無法這樣做,因爲我的方法正在等待對象的引用。但我不知道如何行動(我是一個begginer) 如何避免這個問題? ,併成功返回該對象無法從'QAction *'轉換爲'QAction'
#include "smtdplugin.h"
QAction SmtdPlugin::newItem() {
QAction *item = new QAction(NULL);
return item; // here i get error
}
Q_EXPORT_PLUGIN2(smtdplugin,SmtdPlugin);
頭文件
#ifndef SMTDPLUGIN_H
#define SMTDPLUGIN_H
#include <QObject>
#include <QAction>
#include "smtdinterface.h"
class SmtdPlugin : public QObject,SmtdInterface {
Q_OBJECT
Q_INTERFACES (SmtdInterface)
public :
QAction newItem();
};
#endif // SMTDPLUGIN_H
接口類:
#ifndef SMTDINTERFACE_H
#define SMTDONINTERFACE_H
#include <QAction>
class SmtdInterface {
public:
virtual ~SmtdInterface() {}
SmtdInterface();
virtual QAction newItem() = 0;
};
Q_DECLARE_INTERFACE(SmtdInterface,"com.trololo.Plugin.SmtdInterface/1.0")
#endif
由於答案解決了問題,我不會低估它。 Downvote會首先提出建議。 QAction是QObject,所以它不能被複制。並且您的退貨聲明會嘗試複印,並且無法編譯 –
請刪除您的第一個消音,因爲它是無效的 –
@KamilKlimek:完成。謝謝。 –