void plotsDialog::resetZoomer(int i) { Plot* currentPlot = dynamic_cast<Plot*>(tabs->currentWidget()); d_zoomer[0] = new Zoomer( QwtPlot::xBottom, QwtPlot::yLeft, currentPlot->canvas() ); d_zoomer[0]->setRubberBand( QwtPicker::RectRubberBand ); d_zoomer[0]->setRubberBandPen( QColor( Qt::green ) ); d_zoomer[0]->setTrackerMode( QwtPicker::ActiveOnly ); d_zoomer[0]->setTrackerPen( QColor( Qt::white ) ); d_zoomer[1] = new Zoomer( QwtPlot::xTop, QwtPlot::yRight, currentPlot->canvas() ); d_panner = new QwtPlotPanner( currentPlot->canvas() ); d_panner->setMouseButton( Qt::MidButton ); d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, currentPlot->canvas() ); d_picker->setStateMachine( new QwtPickerDragPointMachine() ); d_picker->setRubberBandPen( QColor( Qt::green ) ); d_picker->setRubberBand( QwtPicker::CrossRubberBand ); d_picker->setTrackerPen( QColor( Qt::white ) ); connect(d_picker,SIGNAL(moved(QPoint)),SLOT(moved(QPoint))); ui->overlayButton->setHidden(currentPlot->isParametric); ui->dataSelectButton->setHidden(!currentPlot->isParametric); enableZoomMode(false); }
int MainWin::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: moved((*reinterpret_cast< const QPoint(*)>(_a[1]))); break; case 1: selected((*reinterpret_cast< const QwtPolygon(*)>(_a[1]))); break; case 2: print(); break; case 3: exportSVG(); break; case 4: enableZoomMode((*reinterpret_cast< bool(*)>(_a[1]))); break; } _id -= 5; } return _id; }
PlotWindow::PlotWindow(MainWindow *parent):QDialog(parent) { qwtPlot = new QwtPlot(this); //设置坐标轴 qwtPlot->setAxisScale(qwtPlot->xBottom,0,1000); //x轴值的初始范围0到1000 qwtPlot->setAxisScale(qwtPlot->yLeft,0,5); //y轴值的初始范围0到5 //加入网格 grid = new QwtPlotGrid; grid->enableX(true); grid->enableY(true); grid->enableXMin(false); grid->enableYMin(false); grid->setMajorPen(QPen(Qt::black,0,Qt::DotLine)); //网格黑色 grid->attach(qwtPlot); //加入缩放功能 d_zoomer = new Zoomer(QwtPlot::xBottom,QwtPlot::yLeft, qwtPlot->canvas()); d_zoomer->setRubberBand(QwtPicker::RectRubberBand); d_zoomer->setRubberBandPen(QColor(Qt::blue)); //鼠标选中框为蓝色 d_zoomer->setTrackerMode(QwtPicker::ActiveOnly); d_zoomer->setTrackerPen(QColor(Qt::blue)); //鼠标选中坐标为蓝色 //加入拖移功能 d_panner = new QwtPlotPanner(qwtPlot->canvas()); d_panner->setMouseButton(Qt::MidButton); //鼠标中间滑轮用于拖移 // //设置通道名 // qwtPlot->setTitle(QStringLiteral("ch")+ QString::number(i)); parentWindow = parent; enableZoomMode(true); //放大、平移功能 xValues = NULL; yValues = NULL; H_trim = 20; //正常显示时,底边宽度留白(全屏时为60) //加入曲线 qwtPlotCurve = new QwtPlotCurve; qwtPlotCurve->setStyle(QwtPlotCurve::Steps); qwtPlotCurve->setRenderHint(QwtPlotCurve::RenderAntialiased); qwtPlotCurve->attach(qwtPlot); }
void chooseCyclesForm::reCreateZoomer(){ // zoomer peakSignalZoomer = new ScrollZoomer( /*QwtPlot::xBottom, QwtPlot::yLeft, */ qwtPlot_peakSignal->canvas()); peakSignalZoomer->setRubberBand(QwtPicker::RectRubberBand); peakSignalZoomer->setRubberBandPen(QColor(Qt::green)); peakSignalZoomer->setTrackerMode(QwtPicker::ActiveOnly); peakSignalZoomer->setTrackerPen(QColor(Qt::white)); // panner peakSignalPanner = new QwtPlotPanner(qwtPlot_peakSignal->canvas()); peakSignalPanner->setMouseButton(Qt::MidButton); // picker peakSignalPicker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, qwtPlot_peakSignal->canvas()); peakSignalPicker->setStateMachine(new QwtPickerDragPointMachine()); peakSignalPicker->setRubberBandPen(QColor(Qt::green)); peakSignalPicker->setRubberBand(QwtPicker::CrossRubberBand); peakSignalPicker->setTrackerPen(QColor(Qt::white)); enableZoomMode(false); }
void plotsDialog::on_zoomButton_toggled(bool checked) { enableZoomMode(checked); }
void arnVectorPlot::init(void) { Size = 0; xval = 0; yval = 0; memallocaced = false; const QwtSymbol* qwtSym = new QwtSymbol(QwtSymbol::Ellipse, Qt::yellow, QPen(Qt::blue), QSize(5, 5)); // // Frame style // d_plot->setFrameStyle(QFrame::Box|QFrame::Raised); d_plot->setLineWidth(2); d_plot->setMidLineWidth(3); d_plot->setAxisTitle(QwtPlot::xBottom, "Time [s]"); d_plot->setAxisScale(QwtPlot::xBottom,0, 10); d_plot->setAxisScale(QwtPlot::yLeft, -20.0, 20.0); d_grid->setPen(QPen(Qt::gray, 0.0, Qt::DotLine)); d_grid->enableX(true); d_grid->enableXMin(true); d_grid->enableY(true); d_grid->enableYMin(false); d_grid->attach(d_plot); d_origin = new QwtPlotMarker(); d_origin->setLineStyle(QwtPlotMarker::Cross); d_origin->setValue(5, 0.0); d_origin->setLinePen(QPen(Qt::gray, 0.0, Qt::DashLine)); d_origin->attach(d_plot); d_curve->setSymbol(qwtSym); d_curve->setPen(QColor(Qt::red)); d_curve->setStyle(QwtPlotCurve::Sticks); d_curve->setRenderHint(QwtPlotItem::RenderAntialiased, true); d_curve->setPaintAttribute(QwtPlotCurve::ClipPolygons, false); d_curve->attach(d_plot); d_zoomer[0] = 0; d_zoomer[1] = 0; d_panner = 0; pLayout->addWidget(pSplitter); pSplitter->addWidget(d_plot); pSplitter->addWidget(pOptionGroup); pAutoScaleChkBx->setCheckable(true); pZoonerChkBx->setCheckable(true); vbox->addWidget(pAutoScaleChkBx); vbox->addWidget(pZoonerChkBx); vbox->addStretch(1); pOptionGroup->setLayout(vbox); connect(pZoonerChkBx, SIGNAL(toggled(bool)), SLOT(enableZoomMode(bool))); connect(pAutoScaleChkBx, SIGNAL(toggled(bool)), SLOT(enableAutoScale(bool))); enableZoomMode(false); //TEST TEST TEST pSplitter->setStretchFactor (pSplitter->indexOf(d_plot), 9 ); pSplitter->setStretchFactor (pSplitter->indexOf(pOptionGroup), 1 ); //END TEST TEST TEST }
void AnalysisWidget::setupUi() { m_curvePlot = new SampleCurvePlot; m_selectFilename = new QLabel; m_selectFilename->setText(QString()); QVBoxLayout *curveLayout = new QVBoxLayout; curveLayout->addWidget(m_selectFilename); curveLayout->addWidget(m_curvePlot); curveLayout->addSpacing(10); m_zoomer[0] = new Zoomer( QwtPlot::xBottom, QwtPlot::yLeft, m_curvePlot->canvas()); m_zoomer[0]->setRubberBand(QwtPicker::RectRubberBand); m_zoomer[0]->setRubberBandPen(QColor(Qt::green)); m_zoomer[0]->setTrackerMode(QwtPicker::ActiveOnly); m_zoomer[0]->setTrackerPen(QColor(Qt::white)); m_zoomer[1] = new Zoomer(QwtPlot::xTop, QwtPlot::yLeft, m_curvePlot->canvas()); m_panner = new QwtPlotPanner(m_curvePlot->canvas()); m_panner->setMouseButton(Qt::MidButton); m_picker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft, QwtPicker::PointSelection | QwtPicker::DragSelection, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, m_curvePlot->canvas()); m_picker->setRubberBandPen(QColor(Qt::green)); m_picker->setRubberBand(QwtPicker::CrossRubberBand); m_picker->setTrackerPen(QColor(Qt::white)); enableZoomMode(false); m_synthesis = new QCheckBox; m_synthesis->setText(tr("二力合成")); m_filterMax = new QCheckBox; m_filterMax->setText(tr("过滤大数")); m_smoother = new QCheckBox; m_smoother->setText(tr("数据平滑")); m_fiveAxis = new QCheckBox; m_fiveAxis->setText(tr("五轴车")); QVBoxLayout *setupLayout = new QVBoxLayout; setupLayout->addWidget(m_synthesis); setupLayout->addWidget(m_filterMax); setupLayout->addWidget(m_smoother); setupLayout->addWidget(m_fiveAxis); m_itemGbx = new QGroupBox(tr("设置操作")); m_itemGbx->setLayout(setupLayout); m_selectBtn = new QPushButton; m_selectBtn->setText(tr("选择文件")); m_zoomBtn = new QPushButton; m_zoomBtn->setText(tr("放大")); m_cleanBtn = new QPushButton; m_cleanBtn->setText(tr("清除")); connect(m_selectBtn, SIGNAL(clicked()), this, SLOT(selectFile())); connect(m_zoomBtn, SIGNAL(toggled(bool)), SLOT(enableZoomMode(bool))); connect(m_cleanBtn, SIGNAL(clicked()), this, SLOT(clean())); connect(m_picker, SIGNAL(moved(const QPoint &)), SLOT(moved(const QPoint &))); connect(m_picker, SIGNAL(selected(const QwtPolygon &)), SLOT(selected(const QwtPolygon &))); QVBoxLayout *btnLayout = new QVBoxLayout; btnLayout->addWidget(m_selectBtn); btnLayout->addWidget(m_zoomBtn); btnLayout->addWidget(m_cleanBtn); m_funcGbx = new QGroupBox(tr("功能")); m_funcGbx->setLayout(btnLayout); m_dataTableWidget = new QTableWidget; m_dataTableWidget->setFixedSize(500, 125); QHBoxLayout *funcLayout = new QHBoxLayout; funcLayout->addSpacing(50); funcLayout->addWidget(m_itemGbx); funcLayout->addSpacing(20); funcLayout->addWidget(m_funcGbx); funcLayout->addSpacing(50); funcLayout->addWidget(m_dataTableWidget); funcLayout->addStretch(); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addLayout(curveLayout); mainLayout->addLayout(funcLayout); setLayout(mainLayout); }
MainWindow::MainWindow( QWidget *parent ): QMainWindow( parent ) { d_plot = new Plot( this ); const int margin = 5; d_plot->setContentsMargins( margin, margin, margin, 0 ); setContextMenuPolicy( Qt::NoContextMenu ); d_zoomer[0] = new Zoomer( QwtPlot::xBottom, QwtPlot::yLeft, d_plot->canvas() ); d_zoomer[0]->setRubberBand( QwtPicker::RectRubberBand ); d_zoomer[0]->setRubberBandPen( QColor( Qt::green ) ); d_zoomer[0]->setTrackerMode( QwtPicker::ActiveOnly ); d_zoomer[0]->setTrackerPen( QColor( Qt::white ) ); d_zoomer[1] = new Zoomer( QwtPlot::xTop, QwtPlot::yRight, d_plot->canvas() ); d_panner = new QwtPlotPanner( d_plot->canvas() ); d_panner->setMouseButton( Qt::MidButton ); d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, d_plot->canvas() ); d_picker->setStateMachine( new QwtPickerDragPointMachine() ); d_picker->setRubberBandPen( QColor( Qt::green ) ); d_picker->setRubberBand( QwtPicker::CrossRubberBand ); d_picker->setTrackerPen( QColor( Qt::white ) ); setCentralWidget( d_plot ); QToolBar *toolBar = new QToolBar( this ); QToolButton *btnZoom = new QToolButton( toolBar ); btnZoom->setText( "Zoom" ); btnZoom->setIcon( QPixmap( zoom_xpm ) ); btnZoom->setCheckable( true ); btnZoom->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); toolBar->addWidget( btnZoom ); connect( btnZoom, SIGNAL( toggled( bool ) ), SLOT( enableZoomMode( bool ) ) ); #ifndef QT_NO_PRINTER QToolButton *btnPrint = new QToolButton( toolBar ); btnPrint->setText( "Print" ); btnPrint->setIcon( QPixmap( print_xpm ) ); btnPrint->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); toolBar->addWidget( btnPrint ); connect( btnPrint, SIGNAL( clicked() ), SLOT( print() ) ); #endif QToolButton *btnExport = new QToolButton( toolBar ); btnExport->setText( "Export" ); btnExport->setIcon( QPixmap( print_xpm ) ); btnExport->setToolButtonStyle( Qt::ToolButtonTextUnderIcon ); toolBar->addWidget( btnExport ); connect( btnExport, SIGNAL( clicked() ), SLOT( exportDocument() ) ); toolBar->addSeparator(); QWidget *hBox = new QWidget( toolBar ); QHBoxLayout *layout = new QHBoxLayout( hBox ); layout->setSpacing( 0 ); layout->addWidget( new QWidget( hBox ), 10 ); // spacer layout->addWidget( new QLabel( "Damping Factor", hBox ), 0 ); layout->addSpacing( 10 ); QwtCounter *cntDamp = new QwtCounter( hBox ); cntDamp->setRange( 0.0, 5.0, 0.01 ); cntDamp->setValue( 0.0 ); layout->addWidget( cntDamp, 0 ); ( void )toolBar->addWidget( hBox ); addToolBar( toolBar ); #ifndef QT_NO_STATUSBAR ( void )statusBar(); #endif enableZoomMode( false ); showInfo(); connect( cntDamp, SIGNAL( valueChanged( double ) ), d_plot, SLOT( setDamp( double ) ) ); connect( d_picker, SIGNAL( moved( const QPoint & ) ), SLOT( moved( const QPoint & ) ) ); connect( d_picker, SIGNAL( selected( const QPolygon & ) ), SLOT( selected( const QPolygon & ) ) ); }
signalForm::signalForm(dualVector<double>* gidroSignal){ log.open("signalForm.log"); log << "constructor call" << std::endl; setupUi(this); signal = gidroSignal; qwtPlot_signal->setAutoReplot(false); //plot qwtPlot_signal->setCanvasBackground(QColor(Qt::darkBlue)); qwtPlot_signal->setTitle("Signal"); qwtPlot_signal->setAxisTitle(QwtPlot::xBottom, "Time points"); qwtPlot_signal->setAxisTitle(QwtPlot::yLeft, "Amplitude"); //legend QwtLegend *legend = new QwtLegend; qwtPlot_signal->insertLegend(legend, QwtPlot::BottomLegend); //grid QwtPlotGrid *grid = new QwtPlotGrid; grid->enableXMin(true); grid->setMajPen(QPen(Qt::white, 0, Qt::DotLine)); grid->setMinPen(QPen(Qt::gray, 0 , Qt::DotLine)); grid->attach(qwtPlot_signal); //curve signalCurve = new QwtPlotCurve("Gidrophone 0 signal"); signalCurve->setPen(QPen(Qt::yellow)); signalCurve->attach(qwtPlot_signal); //display signal curve showSignalFromGidrophone(0); // zoomer signalZoomer = new ScrollZoomer( /*QwtPlot::xBottom, QwtPlot::yLeft, */ qwtPlot_signal->canvas()); signalZoomer->setRubberBand(QwtPicker::RectRubberBand); signalZoomer->setRubberBandPen(QColor(Qt::green)); signalZoomer->setTrackerMode(QwtPicker::ActiveOnly); signalZoomer->setTrackerPen(QColor(Qt::white)); // panner signalPanner = new QwtPlotPanner(qwtPlot_signal->canvas()); signalPanner->setMouseButton(Qt::MidButton); // picker signalPicker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft, QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn, qwtPlot_signal->canvas()); signalPicker->setStateMachine(new QwtPickerDragPointMachine()); signalPicker->setRubberBandPen(QColor(Qt::green)); signalPicker->setRubberBand(QwtPicker::CrossRubberBand); signalPicker->setTrackerPen(QColor(Qt::white)); //setCentralWidget(qwtPlot_signal); // toolbar QToolBar *toolBar = new QToolBar(this); // zoom button QToolButton *btnZoom = new QToolButton(toolBar); btnZoom->setText("Zoom"); btnZoom->setIcon(QIcon(zoom_xpm)); btnZoom->setCheckable(true); btnZoom->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); toolBar->addWidget(btnZoom); connect(btnZoom, SIGNAL(toggled(bool)), SLOT(enableZoomMode(bool))); // adjust spinboxes and connect to showSignalFromGidrophone() spinBox_gidrophonenumber->setMinimum(0); spinBox_gidrophonenumber->setMaximum(signal->sizex() - 1); connect(spinBox_gidrophonenumber, SIGNAL( valueChanged(int) ), this, SLOT( showSignalFromGidrophone(int) ) ); enableZoomMode(false); qwtPlot_signal->setAutoReplot(true); }