我有一個類BatchItem
繼承QObject
,加上幾類,從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)
{
/* ... */
}
/* ... */
但是當我嘗試編譯時,我得到了fol降脂錯誤:
error: type ‘QObject’ is not a direct base of ‘VideoBatchItem’
當然,我看到,這是正確的,因爲QObject
只是VideoBatchItem
間接基地。但爲什麼這是一個問題? 對於例如QAbstractScrollArea
,它繼承自QFrame
,它繼而從QWidget
繼承?他們都以QWidget
作爲他們的父母,但QAbstractScrollArea
僅間接從QWidget
繼承。 不幸的是,我無法在命名控件類的文檔或.cpp文件中找到答案。
由於我不能通過QObject
父母,是否還有一種方法可以使用Qt的父子系統銷燬我的派生批處理項目?
我重載了BatchItem ctor,這有幫助。謝謝! – steps 2012-02-08 18:55:43