确定需要的类,确定行为和属性。
面向过程,考虑数据流向。
将数据绘制出来
1、首先要确定使用的温度计类大概需要什么函数。
如上图所示是大概需要的属性和行为。在电子温度计类继承的时候要注意是共有继承。否则无法正常访问父类的信息。
2、需要对值进行读取和显示。
不可能一直不断的读,所以用到定时器。为整个程序的运行分配时间。
QTimer *t1 = new QTimer();
// signals and slots .1 event creat 1 sig. slots deal sig
//link sig and slots
connect(t1,SIGNAL(timeout()),this,SLOT(makeTemp()));
t1->start(1000);
如上图所示,初始化对象,信号槽做映射,开启就OK了。
3、用图和表对数据进行显示
用图
我们调用写好的库就可以了,主要还是要注意一下信号槽函数的使用
用表
设计主图、描点、连线等。有点繁琐。
信号槽函数代码如下
在我看来这是QT最有特色的地方,通过信号槽函数,将函数的调用和信号的触发联系到一起。当然前文在读取硬件寄存器数值时,同样需要信号槽函数。
可以看到,我们将数据的读取,图和表的显示,音频报警,联系到一起
connect(timer,&QTimer::timeout,[t4,dash,player,this,passMinute]()mutable{
qDebug() << t4->showCurrentTemp();
dash->setValue(t4->showCurrentTemp());
if(passMinute != QTime::currentTime().minute())
{
dotSeries->clear();
connectLineSeries->clear();
passMinute = QTime::currentTime().minute();
}
connectLineSeries->append(QTime::currentTime().second(), t4->showCurrentTemp());
dotSeries->append(QTime::currentTime().second(), t4->showCurrentTemp());
if(t4->showCurrentTemp() > 70)
{
player->play();
}
});
最后做出来是这样的。
左侧以图的形式显示温度,右侧以表格形式显示数据。