22. 仿真小工具实现--Apple的学习笔记

一,前言

之前已经完成了控制面板20.QTableView操作及导出csv--Apple的学习笔记,QCustomPlot的波形图面板21.Qcustomplot绘制波形图--Apple的学习笔记,现在要把2个结合起来。

二,需求

通过手工操作按钮来查看u8的DTC状态位的值。每个bit值通过plot绘图实时显示。

三,遇到的问题

1. 如何获取自建widget中所有Qpushbutton控件?
答:简单的方法如下

    QList btns = findChildren();
    foreach (QPushButton* btn,btns)
    {
        qDebug()<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

五,小结

自制一个实用小工具,等于对之前学习的内容做一个综合应用。

你可能感兴趣的:(22. 仿真小工具实现--Apple的学习笔记)