【发布时间】:2014-08-16 02:27:51
【问题描述】:
我正在编写一个每 10 毫秒发送一个 UDP 帧的程序。这是我的程序应该如何工作的:
我有一个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();
}
我的clienSupervision.h的头文件:
#ifndef CLIENTSUPERVISION_H
#define CLIENTSUPERVISION_H
#include <winsock2.h> // pour les fonctions socket
#include <cstdio> // Pour les Sprintf
#include "StructureSupervision.h"
#include "utilitaireudp.h"
#include <QTimer>
#include <QObject>
#include <iostream>
class clientSupervision
{
Q_OBJECT
public:
clientSupervision();
void sendDataUDP();
void sendDataUDPTimer(int timer);
public slots:
void envoiTrameSupervision();
};
#endif // CLIENTSUPERVISION_H
然后我在我的main 中使用它:
int main(int argc, char *argv[])
{
clientSupervision c;
c.sendDataUDPTimer(10);
QCoreApplication a(argc, argv);
return a.exec();
}
我有错误:
没有匹配函数调用'QObject::connect(QTimer*&, const char*, clientSupervision* const, const char*)
我不明白为什么connect函数找不到匹配的函数。
我应该改变什么?
【问题讨论】:
-
你的类应该继承 QObject。否则 Qt 信号/槽机制将不起作用。
-
@FinalContest 感谢您的帮助,我很快就会见到您,我对该代码还有另一个问题^^
-
@EvansBelloeil:当然,np。不要担心我们得到的反对票。它们都无法解释,因此无需担心。 :)
-
@ipapp 我也同意你的看法。无法解释的反对票通常没什么好担心的。
标签: c++ qt qtcore qobject qt-signals