DrawInteraction::DrawInteraction(QWidget *parent) : QCustomPlot(parent) { resize(600,400); statusBar = new QStatusBar(this); srand(QDateTime::currentDateTime().toTime_t()); setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables); xAxis->setRange(-8, 8); yAxis->setRange(-5, 5); axisRect()->setupFullAxesBox(); plotLayout()->insertRow(0); plotLayout()->addElement(0, 0, new QCPPlotTitle(this, "Interaction Example")); xAxis->setLabel("x Axis"); yAxis->setLabel("y Axis"); legend->setVisible(true); QFont legendFont = font(); legendFont.setPointSize(10); legend->setFont(legendFont); legend->setSelectedFont(legendFont); legend->setSelectableParts(QCPLegend::spItems); // legend box shall not be selectable, only legend items addRandomGraph(); addRandomGraph(); addRandomGraph(); addRandomGraph(); // connect slot that ties some axis selections together (especially opposite axes): connect(this, SIGNAL(selectionChangedByUser()), this, SLOT(selectionChanged())); // connect slots that takes care that when an axis is selected, only that direction can be dragged and zoomed: connect(this, SIGNAL(mousePress(QMouseEvent*)), this, SLOT(mousePress())); connect(this, SIGNAL(mouseWheel(QWheelEvent*)), this, SLOT(mouseWheel())); // make bottom and left axes transfer their ranges to top and right axes: connect(xAxis, SIGNAL(rangeChanged(QCPRange)), xAxis2, SLOT(setRange(QCPRange))); connect(yAxis, SIGNAL(rangeChanged(QCPRange)), yAxis2, SLOT(setRange(QCPRange))); // connect some interaction slots: connect(this, SIGNAL(titleDoubleClick(QMouseEvent*,QCPPlotTitle*)), this, SLOT(titleDoubleClick(QMouseEvent*,QCPPlotTitle*))); connect(this, SIGNAL(axisDoubleClick(QCPAxis*,QCPAxis::SelectablePart,QMouseEvent*)), this, SLOT(axisLabelDoubleClick(QCPAxis*,QCPAxis::SelectablePart))); connect(this, SIGNAL(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*,QMouseEvent*)), this, SLOT(legendDoubleClick(QCPLegend*,QCPAbstractLegendItem*))); // connect slot that shows a message in the status bar when a graph is clicked: connect(this, SIGNAL(plottableClick(QCPAbstractPlottable*,QMouseEvent*)), this, SLOT(graphClicked(QCPAbstractPlottable*))); // setup policy and connect slot for context menu popup: setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuRequest(QPoint))); }
void CustomPlotRegression::contextMenuRequest(QPoint pos) { // std::cout << "Right Click" << std::endl; QMenu *menu = new QMenu(m_CustomPlot); menu->setAttribute(Qt::WA_DeleteOnClose); menu->addAction("Add random graph", this, SLOT(addRandomGraph())); // if (m_CustomPlot->selectedGraphs().size() > 0) // menu->addAction("Remove selected graph", this, SLOT(removeSelectedGraph())); // if (m_CustomPlot->graphCount() > 0) // menu->addAction("Remove all graphs", this, SLOT(removeAllGraphs())); menu->popup(m_CustomPlot->mapToGlobal(pos)); }
int MainWindow::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: SendTotalSamples((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: on_butAppBck_clicked(); break; case 2: on_butRefresh_clicked(); break; case 3: on_butStop_clicked(); break; case 4: on_butStart_clicked(); break; case 5: on_butZoomIn_clicked(); break; case 6: on_butZoomOut_clicked(); break; case 7: on_butExit_clicked(); break; case 8: on_butRemoveAll_clicked(); break; case 9: on_butRemoveSelected_clicked(); break; case 10: on_butSine_clicked(); break; case 11: on_butSquare_clicked(); break; case 12: on_butTriangle_clicked(); break; case 13: on_butSawtooth_clicked(); break; case 14: on_butPulse_clicked(); break; case 15: on_butRandom_clicked(); break; case 16: on_butMergeAll_clicked(); break; case 17: on_actionZoom_Out_triggered(); break; case 18: on_actionZoomin_triggered(); break; case 19: on_actionRemove_Selected_triggered(); break; case 20: on_actionRemove_All_triggered(); break; case 21: on_actionRandom_triggered(); break; case 22: on_actionMerge_All_triggered(); break; case 23: on_actionPulse_triggered(); break; case 24: on_actionSAwtooth_triggered(); break; case 25: on_actionTriangle_triggered(); break; case 26: on_actionSquare_triggered(); break; case 27: on_actionSine_triggered(); break; case 28: titleDoubleClick((*reinterpret_cast< QMouseEvent*(*)>(_a[1])),(*reinterpret_cast< QCPPlotTitle*(*)>(_a[2]))); break; case 29: axisLabelDoubleClick((*reinterpret_cast< QCPAxis*(*)>(_a[1])),(*reinterpret_cast< QCPAxis::SelectablePart(*)>(_a[2]))); break; case 30: legendDoubleClick((*reinterpret_cast< QCPLegend*(*)>(_a[1])),(*reinterpret_cast< QCPAbstractLegendItem*(*)>(_a[2]))); break; case 31: selectionChanged(); break; case 32: mousePress(); break; case 33: mouseWheel(); break; case 34: addRandomGraph(); break; case 35: addSineGraph(); break; case 36: addSquareGraph(); break; case 37: addTriangleGraph(); break; case 38: addSawtoothGraph(); break; case 39: addPulseGraph(); break; case 40: removeSelectedGraph(); break; case 41: removeAllGraphs(); break; case 42: contextMenuRequest((*reinterpret_cast< QPoint(*)>(_a[1]))); break; case 43: moveLegend(); break; case 44: graphClicked((*reinterpret_cast< QCPAbstractPlottable*(*)>(_a[1]))); break; case 45: receiveValue((*reinterpret_cast< double(*)>(_a[1]))); break; case 46: receiveValue((*reinterpret_cast< QString(*)>(_a[1]))); break; case 47: receiveValue((*reinterpret_cast< uint(*)>(_a[1]))); break; case 48: callLineEditInput((*reinterpret_cast< int(*)>(_a[1]))); break; case 49: openWaveDataWindow(); break; case 50: RxSamples((*reinterpret_cast< int(*)>(_a[1]))); break; case 51: RxStartTick((*reinterpret_cast< int(*)>(_a[1]))); break; case 52: RxStopTick((*reinterpret_cast< int(*)>(_a[1]))); break; case 53: RxDutyCycle((*reinterpret_cast< int(*)>(_a[1]))); break; default: ; } _id -= 54; } return _id; }