Qt数据实时绘制之双击放大单一通道

为解决32通道数据同时显示导致界面拥挤的问题,本文介绍了一种通过双击特定图表来放大显示单一通道数据的方法。该方法通过计算鼠标点击位置来确定被放大的通道,并使用独立的对话框进行展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的:

由于目前采用的是32通道,绘制的同时已经使得界面有些拥挤。这就使得对单一通道数据的观察有些乏力。所以,采用了双击一个图表,放大显示的方法来暂时解决。


效果:

  • 双击任何一个图表,都会放大为一个大的dialog进行显示。双击dialog进行关闭。



实现

思路:

  • qwtplot并不能通过鼠标事件获取widget的方法来获得所选是哪一个。
  • 根据鼠标获取相对的坐标,再者窗口按照QGridLayout排列,所以直接计算得出选择的是哪一个图表。

代码:

/**
 * @brief DisWindow::mouseDoubleClickEvent
 * @param e
 * 鼠标双击事件,用于进行单通道的详细显示
 */
void DisWindow::mouseDoubleClickEvent(QMouseEvent *e){

    int mouse_x = e->pos().x();//获得鼠标相对窗体的点击坐标
    int mouse_y = e->pos().y();
    //    qDebug()<<"mouse_x--> "<<mouse_x;
    //    qDebug()<<"mouse_y--> "<<mouse_y;
    QWidget *cw = ui->centralwidget;
    int cw_w = cw->width();//获取窗体的整体宽度和高度
    int cw_h = cw->height();
    //    qDebug()<<"cw_w--> "<<cw_w;
    //    qDebug()<<"cw_h--> "<<cw_h;
    int interval_x = cw_w/numofline;//计算得出选择的是哪一个
    int interval_y = cw_h/(chooseNum/numofline);
    dialogChannelNum = mouse_x/interval_x+mouse_y/interval_y*numofline;//主要就是确定是哪一个通道
    //    qDebug()<<"click num--> "<<dialogChannelNum<<endl;

    Dialog *dig = new Dialog;
    dig->show();
    connect(updateqwt,SIGNAL(senddata2Dialog()),dig,SLOT(receiveData()));

}

本人只是初学者,关于程序的一切问题,欢迎交流留言。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值