私はQObject
を継承するクラスBatchItem
、プラスBatchItem
から継承するいくつかのクラスがあります。BatchItem
から継承したクラスのQObjectが間接的な唯一のクラスでQObjectの親を設定できないのはなぜですか?
#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
例:
#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)
{
/* ... */
}
/* ... */
しかし、私がコンパイルしようとすると、 lowingエラー:QObject
として
error: type ‘QObject’ is not a direct base of ‘VideoBatchItem’
は、VideoBatchItem
の唯一の間接的な拠点です。しかし、それはなぜ問題なのでしょうか? そのような場合もそうではありませんか? QAbstractScrollArea
であり、QFrame
から継承し、次にQWidget
? QAbstractScrollArea
はQWidget
から間接的にしか継承しませんが、すべてがQWidget
を親として取ります。 残念ながら、ドキュメントや名前付きウィジェットクラスの.cppファイルには答えが見つかりませんでした。
私はQObject
の親を渡すことができないので、Qtの親子システムを派生バッチアイテムの破壊に使用する方法はありますか?
私はBatchItem ctorをオーバーロードしました。どうも! – steps