を継承するクラスBatchItem
とQObject
、から継承するいくつかのクラスがありBatchItem
ます。
#ifndef BATCHITEM_H
#define BATCHITEM_H
#include <QObject>
class BatchItem : public QObject
{
Q_OBJECT
public:
virtual void start() = 0;
virtual void stop() = 0;
signals:
/* ... some signals ... */
};
#endif // BATCHITEM_H
から継承するクラスの例BatchItem
:
#ifndef VIDEOBATCHITEM_H
#define VIDEOBATCHITEM_H
#include "batchprocessing/batchitem.h"
#include <QtCore/QObject>
class VideoBatchItem : public BatchItem
{
Q_OBJECT
public:
explicit VideoBatchItem(/* ... */, QObject *parent = 0);
void start();
void stop();
private:
/* ... some private member variables ... */
};
#endif // VIDEOBATCHITEM_H
そして、これは対応する .cpp です:
#include "videobatchitem.h"
VideoBatchItem::VideoBatchItem(/* ... */,
QObject *parent) :
/* ... */,
QObject(parent)
{
/* ... */
}
/* ... */
しかし、コンパイルしようとすると、次のエラーが発生します。
error: type ‘QObject’ is not a direct base of ‘VideoBatchItem’
もちろん、これは正しいことがわかります。QObject
の間接ベースのみですVideoBatchItem
。しかし、なぜそれが問題なのですか?QAbstractScrollArea
から継承しQFrame
、さらにから継承するなどの場合も同様ではないQWidget
でしょうか。から間接的に継承するだけQWidget
ですが、それらはすべて親としてa を取ります。残念ながら、ドキュメントにも、名前付きウィジェット クラスの .cpp ファイルにも、その答えは見つかりませんでした。QAbstractScrollArea
QWidget
親を渡すことができないQObject
ため、派生したバッチ アイテムを破棄するために Qt の親子システムを使用する方法はありますか?