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

一,前言

之前已经完成了控制面板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

五,小结

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容