ubuntu 18.04 QObject::moveToThread: Current thread (0x20496a0) is not the object's thread (0x606c980). Cannot move to target thread (0x20496a0)
时间: 2023-08-15 07:03:09 浏览: 193
这个错误通常是因为你尝试在一个非GUI线程中更新GUI部件。在Qt中,GUI部件只能在主线程中更新,而不能在其他线程中更新。解决这个问题的方法是使用Qt的信号槽机制,将GUI更新操作放到主线程中执行。
具体来说,你可以使用`QMetaObject::invokeMethod()`函数将一个槽函数连接到一个信号上,然后在槽函数中更新GUI部件。
例如,假设你有一个`QLabel`对象需要更新,你可以这样做:
```cpp
QLabel* label = new QLabel("Hello world");
connect(this, &MyClass::updateLabelText, label, &QLabel::setText);
```
然后在你的非GUI线程中,通过发射信号来更新`QLabel`的文本:
```cpp
emit updateLabelText("New text");
```
这样就可以避免上述错误了。
阅读全文