QTimer: Таймеры могут использоваться только с потоками, запущенными с QThread

Я видел людей с такой же проблемой, как у меня, но решение не сработало для меня.

Вот мой код:

Я пишу программу, которая отправляет кадр UDP каждые 10 мс. Вот как должна работать моя программа:

у меня есть client class:

//Constructor
clientSupervision::clientSupervision()
{
}

void clientSupervision::sendDataUDP(){
    //Create a frame and send it
...
}

void clientSupervision::sendDataUDPTimer(int timer){
    QTimer *tempsEnvoieTrameSupervision = new QTimer();//Create a timer
    tempsEnvoieTrameSupervision->setInterval(timer);//Set the interval

    //Mise en place des connections
    QObject::connect (tempsEnvoieTrameSupervision,SIGNAL (timeout()),this, SLOT (envoiTrameSupervision())); //Connect the timer to the function
    tempsEnvoieTrameSupervision->start();// Start the timer
}

//Call sendDataUDP
void clientSupervision::envoiTrameSupervision(){
    std::cout << "Envoi de la trame de supervision";
    sendDataUDP();
}

Тогда я использую это в моем main:

int main(int argc, char *argv[])
{
    clientSupervision c;
    c.sendDataUDPTimer(10);
    QCoreApplication a(argc, argv);

    return a.exec();
}

Почему таймер не работает? Должен ли я это испортить где-нибудь еще?

Благодарю.

0 ответов

Другие вопросы по тегам