目的:
由于目前采用的是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()));
}
本人只是初学者,关于程序的一切问题,欢迎交流留言。