【发布时间】:2019-09-21 06:02:03
【问题描述】:
这是给我的问题
- 创建一个名为 datamanager 的项目,它的基类应该是 QWidget
- 添加一个从 QObject 继承的名为 controller 的新类
- 和 2 个插槽,称为 sensordatarecived 和 startdatacollection 在控制器中
- 添加另一个继承自 QObject 的名为 commonreader 的类
- 在 commonreader 类中定义 2 个分别称为 readingStarted() 和 readCompleted() 的信号
- 添加一个名为 sendData() 的槽
- 在 commonreader 类中声明一个名为 monitor() 的虚函数
- 新增 5 个继承自 commonreader 类的新传感器类
- 在所有上述类中重新实现了通用的 Monitor() 函数
- 使用 QTimer 对象实现从定义的 5 个类中的每一个的 monitor() 函数发出 readingStarted()
- 实现 sendData() 槽
- 在发送数据槽() 中发出名为 readcompleted 的信号
- 在控制器的构造函数中创建上述每个传感器类的对象
- 从 startDataCollection() 调用方法传感器对象的 monitor() 函数
- 将每个对象的 readComplete() 信号连接到控制器的 sensordatarecieved()。
这些是我为一个项目必须遵循的步骤。我被困在第 14 步,我需要帮助。
//controller.h
class controler : public QObject
{
Q_OBJECT
public:
explicit controler(QObject *parent = nullptr);
signals:
public slots:
void sensorDataRecived();
void startDataCollection();
};
//controller.cpp
#include "controler.h"
#include <QDebug>
#include "heart_1_sensor.h"
#include "eye_2_sensor.h"
#include "brain_3_sensor.h"
#include "ear_5_sensor.h"
#include "head_4_sensor.h"
#include "commonreaderclass.h"
controler::controler(QObject *parent) : QObject(parent)
{
commonReaderClass *h1=new heart_1_Sensor;
commonReaderClass *e2=new eye_2_Sensor;
commonReaderClass *b3=new brain_3_sensor;
commonReaderClass *e5=new ear_5_sensor;
commonReaderClass *h4=new head_4_sensor;
}
void controler::sensorDataRecived()
{
qDebug()<<Q_FUNC_INFO<<endl;
}
void controler::startDataCollection()
{
}
//commonreaderclass.h
#ifndef COMMONREADERCLASS_H
#define COMMONREADERCLASS_H
#include <QObject>
class commonReaderClass : public QObject
{
Q_OBJECT
public:
explicit commonReaderClass(QObject *parent = nullptr);
virtual void monitor();
signals:
void readingStarted();
void readCompleted();
public slots:
void sendData();
};
#endif // COMMONREADERCLASS_H
//commonreaderclass.cpp
#include "commonreaderclass.h"
#include <QDebug>
#include <QTimer>
commonReaderClass::commonReaderClass(QObject *parent) : QObject(parent)
{
}
void commonReaderClass::sendData()
{
qDebug()<<"sending data has started"<<endl;
emit readCompleted();
}
//sensor1.h
#ifndef HEART_1_SENSOR_H
#define HEART_1_SENSOR_H
#include "commonreaderclass.h"
class heart_1_Sensor:public commonReaderClass
{
public:
heart_1_Sensor();
virtual void monitor();
};
#endif // HEART_1_SENSOR_H
//sensor 1.cpp
#include "heart_1_sensor.h"
#include <QDebug>
#include <QTimer>
heart_1_Sensor::heart_1_Sensor()
{
}
void heart_1_Sensor::monitor()
{
qDebug()<<"monitoring the heart"<<endl;
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(sendData()));
timer->start(2000);
emit readingStarted();
}
//and another 4 sensors of the same implementation
【问题讨论】:
-
看起来你需要阅读你最喜欢的 C++ 书籍中的成员变量。