gpt4 book ai didi

c++ - 具有自己的 QTimer 和 QThread 的自定义类

转载 作者:行者123 更新时间:2023-11-27 22:57:21 24 4
gpt4 key购买 nike

我想为机器人传感器的某些项目创建一个具有自己的 QTimer 和 QThread 的类。经过一番搜索,这就是我想出的

#include <QCoreApplication>
#include <QTimer>
#include <QThread>
#include <QObject>
#include <QDebug>


//#####################( Robot Class )#########################3

class Robot : public QObject
{
public:
Robot(QObject *parent = 0);
~Robot();

private:
QTimer *mQTimer;
QThread *mQThread;

public slots:
void update();

};

Robot::Robot(QObject *parent)
: QObject(parent)
{
mQTimer = new QTimer(0);
mQThread = new QThread(this);

mQTimer->setInterval(1);
mQTimer->moveToThread(mQThread);

connect(mQTimer, SIGNAL(timeout()), this, SLOT(update()));
connect(mQThread, SIGNAL(started()), mQTimer, SLOT(start()));

mQThread->start();
//mQTimer->start();

}

Robot::~Robot()
{
delete mQTimer;
delete mQThread;
}

void Robot::update()
{
qDebug() << "Robot is updating ...";
}

//##################( Main )###########################
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

Robot *myRobot = new Robot(0);

return a.exec();
}

我遇到了这个错误

QObject::connect: No such slot QObject::update() in ..\untitled1\main.cpp:34
QObject::connect: No such slot QObject::update() in ..\untitled1\main.cpp:34

最佳答案

你在你的类中缺少 Q_OBJECT 宏也尽量避免这样命名方法,因为你可以将它与 Qt 方法名称混合。还要为您创建的每个类制作额外的头文件和 cpp 文件,在本例中制作 robtot.h 和 robot.cpp。

class Robot : public QObject
{
Q_OBJECT
public:
Robot(QObject *parent = 0);
~Robot();
...

关于c++ - 具有自己的 QTimer 和 QThread 的自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31519881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com