一,前言
之前已经完成了控制面板20.QTableView操作及导出csv--Apple的学习笔记,QCustomPlot的波形图面板21.Qcustomplot绘制波形图--Apple的学习笔记,现在要把2个结合起来。
二,需求
通过手工操作按钮来查看u8的DTC状态位的值。每个bit值通过plot绘图实时显示。
三,遇到的问题
1. 如何获取自建widget中所有Qpushbutton控件?
答:简单的方法如下
QList<QPushButton*> btns = findChildren<QPushButton*>();
foreach (QPushButton* btn,btns)
{
qDebug()<<btn->objectName();
}
2. 表格水平滚轮没有了?
答:由于我设置了表格的最后一列自适应宽度,导致水平滚轮没有了。所以设置为固定宽度即可。然后widget也设置固定宽度。
3. 如何清空QCustomGraphic及游标?
答:创建的游标用list收集,之后统一删除。
void Wave::ClearGraphs()
{
// 删除波形数据
myPlot->graph(0)->data().data()->clear();
// 删除游标及标签
foreach(QCPItemStraightLine *vline,m_vlinelist)
{
vline->setVisible(false);
}
foreach(QCPItemText *vTag,m_currentLabellist)
{
vTag->setVisible(false);
}
// 清空缓存列表
m_currentLabellist.clear();
m_vlinelist.clear();
// 重绘
myPlot->replot();
}
4. 子窗口和父窗口可以同时运行时,父窗口关闭后如何自动关闭子窗口?
答:主要是设置Qt::WA_DeleteOnClose属性。
void MainWindow::showHelp()
{
helpwin = new Helpwin;
helpwin->setAttribute(Qt::WA_DeleteOnClose);
helpwin->show();
}
5. 如何释放qlist的堆内存?
答:deleteall(xxx)释放内存,但是游标都绑定在QCustomPlot上,plot释放的时候游标也释放。所以只能用clear把size清0。
四,效果
image.png
右击表格弹出菜单可以清屏也可以导出表格和图片
image.png
五,小结
自制一个实用小工具,等于对之前学习的内容做一个综合应用。