Что касается дополнения к ответу лозы. Вы можете выдавать эти слоты не только через сигналы. Вы также можете использовать следующий код:
Base *pBase = new Base;
QMetaObject::invokeMethod(pBase, "copy");
Если метод copy
должен принимать аргументы, используйте макросы Q_ARG
для их передачи. У помощника есть несколько хороших примеров (поиск по invokeMethod()
).
Еще одна вещь, если вы не хотите объявлять эти методы как слоты, но по-прежнему хотите, чтобы они вызывались QMetaObject::invokeMethod()
, вы можете добавить его к макросам Q_INVOKABLE
.
...
public:
Q_INVOKABLE void copy();
...