друга.
Еще раз покажу. Раньше был такой код
class A: public QObject{
signals:
slots:
}
class B: public A{}
class C: public A{}
B b;
b.moveToThread(th1);
C c;
c.moveToThread(th2);
Сейчас я хочу сделать так
class AImpl: public QObject {
signals:
slots:
}
class A {
Aimpl impl
}
class B: public QObject, public A {}
class C: public QObject, public A{}
Но проблема в том, что этот код
B b;
b.moveToThread(th1);
C c;
c.moveToThread(th2);
Не будет работать, как надо. Так как сам класс B переместится в th1, а AImpl - нет
Можно добавить в A или AImpl отдельный метод
class A{
void mvToTh(QThread *th) {
impl.moveToTHread(th)
}
AImpl impl;
}
Но как потом не забыть перебрать все классы B, C и т.д., чтобы вызвать этот метод?
чайлды объекта тоже же вродь перемещаются в QThread ? class A { Aimpl *impl=nullptr; public: A(): QObject(parent), impl(new Aimpl(this)) {} } ?
Обсуждают сегодня