deleteLater при наследовании

208
22 октября 2018, 07:40

Представим, что есть класс, производный об QObject:

class Base : public QObject
{
    Q_OBJECT
public:
    virtual ~Base();
    ...
}

также есть дочерний класс, в котором отсутствует объявление Q_OBJECT

class Child: public Base 
{
    ....
}

корректно ли отработают деструкторы при вызове deleteLater дочернего класса ?

Base* new_child = new Child();
...
child->deleteLater();

И, собственно необходимо ли использовать Q_OBJECT макрос в каждом из наследуемых классов, если эти классы не имеют собственных сигналов/слотов?

Answer 1

корректно ли отработают деструкторы при вызове deleteLater дочернего класса ?

Да

необходимо ли использовать Q_OBJECT макрос в каждом из наследуемых классов, если эти классы не имеют собственных сигналов/слотов?

Документация рекомендует это делать, так как он используется для свойств и информации о типах (для qobject_cast):

The moc tool reads a C++ header file. If it finds one or more class declarations that contain the Q_OBJECT macro, it produces a C++ source file containing the meta-object code for those classes. Among other things, meta-object code is required for the signals and slots mechanism, the run-time type information, and the dynamic property system.

Notice that the Q_OBJECT macro is mandatory for any object that implements signals, slots or properties. You also need to run the Meta Object Compiler on the source file. We strongly recommend the use of this macro in all subclasses of QObject regardless of whether or not they actually use signals, slots and properties, since failure to do so may lead certain functions to exhibit strange behavior.

READ ALSO
Прозрачность фоновой картинки label в qt

Прозрачность фоновой картинки label в qt

Нужно изменить фон label, а точней сделать его полупрозрачнымПробовал изменить прозрачность в фотошопе, не помогло

195
Как реализовать вектор стеков в C++?

Как реализовать вектор стеков в C++?

Следующая запись выдает ошибку:

178
Проблема с циклами

Проблема с циклами

По моей задумке персонажи меняют своё положение на 1 клетку в одно случайное направление из восьмиПроблема заключается в том, что за цикл...

190
Как вести информацию в статусбар?

Как вести информацию в статусбар?

У меня есть главное окно, нам нём кнопка, которая открывает новое модальное окно (кнопка Параметры)У этого модального окна есть кнопка, которая...

166