У меня есть следующий класс.
class MyClass : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE QVariant status();
public:
MyClass(ClassX * classX);
public slots:
void slotA();
void slotB();
signals:
void signalA();
void signalB();
private:
void init();
void doSomething();
private:
ClassX * classX;
ClassA classA;
ClassB classB;
};
В конструктор MyClass
«с, я установил classX
к this.classX
и в init()
, я connect
некоторые из classX
сигналов MyClass
слотов и Wise-Versa, а в someFunction()
я использовать classA
и classB
.
В моем controller
классе в основной теме я создаю объект MyClass
и запускаю его внутри другой темы.
MyClass * myClass = new MyClass(classX);
connect(&myClassThread, SIGNAL(started()), myClass, SLOT(init()));
myClass->moveToThread(&myClassThread);
myClassThread.start();
Я вижу следующее предупреждение в qDebugger
.
QObject::setParent: Cannot set parent, new parent is in a different thread
Может ли кто-нибудь сказать мне, почему я получаю это предупреждение?
Благодаря передовой
PS 1: classX
создан в основном потоке.
PS 2: Помните, что все работает нормально, и у меня нет проблем, я просто хочу знать причину этого предупреждения и как его исправить.
PS 3: Я также использую следующую команду в основной теме, чтобы открыть объект в javascript
.
webFrame->addToJavaScriptWindowObject("myClassObject", myClass);
Редактировать 1: QThread myClassThread является членом класса.
Редактировать 2: Я считаю, что недостаток информации, смутил вас, ребята, и я сожалею об этом.
Конструктор MyClass
как это:
MyClass::MyClass(ClassX * classX)
{
this.classX = classX;
}
Возможный дубликат [QObject: Невозможно создать детей для родителей, который находится в другом потоке] (HTTP: //stackoverflow.com/questions/3268073/qobject-cannot-create-children-for-a-parent-that-is-in-a-different-thread) – UmNyobe
легко n-й вопрос об этом. 'MyClass * myClass = new MyClass (classX);' должен быть 'MyClass * myClass = new MyClass (0);'. Полная остановка. – UmNyobe
@UmNyobe Даже без параметров я все еще получаю предупреждения –