Qt перемещает виджет gui в поток gui - PullRequest
0 голосов
/ 30 апреля 2020

Так что Qt должен иметь все GUI приложения, работающие в потоке Main GUI. У меня есть не-1009 * cpp, который запускает QDialog, и когда я пытаюсь взаимодействовать с виджетом, я получаю QObject::startTimer: Timers cannot be started from another thread. Именно это привело меня к обнаружению, что мне нужно переместить виджет в основной поток. Мой вопрос заключается в том, как мне переместить no_id_wheel_screen в основной поток.

cpp моего не- gui потока

#include "gui_image_node.h"

gui_image_node::gui_image_node()
{

}

bool gui_image_node::init(int argc, char** argv)
{
    m_pThread = new QThread();

    m_no_id_wheel_screen = new no_id_wheel_screen;

    this->moveToThread(m_pThread);

    connect(m_pThread, &QThread::started, this, &gui_image_node::run);

    connect(m_no_id_wheel_screen, &no_id_wheel_screen::ReadyHollander, this, &gui_image_node::HolPub);

    hollander_pub = nh.advertise<std_msgs::String>("/hollander_chat", 1);

    hol_trigger = nh.subscribe("awaiting_hollander", 1, &gui_image_node::Hollander_Screen_trigger_callback, this);

    m_pThread->start();
    return true;
}
//Where I start the widget
void gui_image_node::Hollander_Screen_trigger_callback(const std_msgs::String::ConstPtr& msg)
{
    std::string steve = msg->data; 
    no_id_wheel_screen midscreen;
    midscreen.exec();
}

1 Ответ

0 голосов
/ 30 апреля 2020

@ У Фрэнка Остерфельда была правильная идея. Я только что сделал еще одно соединение с MainWindow, затем MainWindow выполнил мой виджет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...