mar*_*n2k 6 c++ user-interface qt
我正在研究用于Qt的Gui-Module来绘制基于Qwt的数字示波器中的实时测量.到目前为止一切都可以,但也许还有一些功能需要添加;-)
目前,数据在QVectors中按列存储,并在一个单独的QObject中与一个全局timeReference QVector一起存储.因此,可以逐行丢弃数据,以便仅将Meusurement保持到某个过去.所有QVectors总是具有相同的长度.然后,可以在QwtPlot中按时间正确地绘制完整数据.
我想更多地封装数据存储,以便更加独立于测量.因此,为每个测量添加一个单独的时间坐标列表并将它们放在一个单独的QObject中是很好的,它接受和传递数据.然后将有10或20个这样的QObject,每个数据通道一个,它们由QwtPlot上的上覆QObject单独绘制.
现在,数据可以是动态的 - 无论外部是否可以看到数据在两者之间的存储,更改或丢弃方式.
我的问题是:这很聪明吗?20或30个QObjects包含每10000个测量值,10000个时间值,加上一个相似大小的单独存储区域(动态填充),其中一个子集ob数据被提供用于绘图...?将QObject中的每个测量值作为信号接收是否合理,在1kHz左右发射?信号/槽-一部分来自制造的想法每后面的对象一个的QThread,并执行实时过滤,像上的数据低通或FFT - 因此,信号/槽连接是方便的CONTROLL输出在多线程环境?
如何在我的OBjects中有效存储数据?我正在考虑两个QList,一个用于时间,一个用于珍贵数据.然后动态分配两个普通的双数组用于动态访问,其指针与长度一起放在结构中并由accessData(pastTime)方法返回.动态存储器由从"现在"到过去的某个点的timeVal /测量组合填充,可由信号设置.QObject中的互斥体保护的所有东西都很脆弱.
当丢弃旧值时,必须从头开始搜索QList,以获得足够年轻的第一个值,保留在该索引之前的那个值.由于其upperBound()函数,QMap是否更智能?我认为隐藏的开销不值得.
一个专业人员将如何很好地,有效地或没有任何麻烦地尝试解决这个问题?我应该知道的特殊Qt功能?或者甚至是那里的免费解决方案?无论如何,这样一个基本问题的文字很多......感谢您在这里阅读;-)
提前致谢
马文
edith:在stijns评论之后做了一些清理.
photo_tom的答案几乎总结了一下:我远离QObjects来实现数据处理和处理.