При наследовании от класса, который уже наследует QObject возникает проблема регистрации (соединения) слотов дочернего класса:
QObject -> Parent -> Child
Данный код в конструкторе Child:
connect(anything, SIGNAL(destroyed()), this, SLOT(testSlot1()));
#ifndef PARENT_H
#define PARENT_H
#include <QObject>
class Parent : public QObject
{
Q_OBJECT
public:
explicit Parent(QObject *parent = 0);
};
#endif // PARENT_H
#include "parent.h"
Parent::Parent(QObject *parent) :
QObject(parent)
{
}
#ifndef CHILD_H
#define CHILD_H
#include "parent.h"
class Child : public Parent
{
public:
Child();
public slots:
void testSlot1();
};
#endif // CHILD_H
#include "child.h"
Child::Child()
{
QObject* anything = new QObject();
connect(anything, SIGNAL(destroyed()), this, SLOT(testSlot1()));
}
а попробуй сделать слот виртуальным и объявить в базовом классе.
А ты слот определил? А то я в коде чет это не заметил(
Вообщем на windows системах, а может и на всех, есть такой баг, который лечится только ручной чисткой папки с банарниками и make файлами или её удалением (очистка в креаторе не помогает).
Побробнее написано http://www.rsdn.ru/forum/cpp.qt/3731259.all.aspx(последнее сообщение).
На случай смерти ссылки:
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)