2012-10-25 13 views
7

Ho un grafico qwt nella mia applicazione. Voglio mostrare un piccolo suggerimento per mostrare il valore del punto in cui il mouse è puntato sulla curva. Ho scoperto che devo usare QwtPlotPicker per questo, ma non ho trovato alcun esempio corretto per implementarlo nel mio codice. Sono nuovo di Qwt quindi sarebbe bello se qualcuno potesse aiutarmi a risolvere questo problema.Suggerimento per mostrare i valori del grafico in Qwt

Grazie, Rakesh.

risposta

3

L'autore stesso dice here:

Un QwtPlotPicker ti dà la posizione corrente del mouse (a schermo e coordina trama). Quindi devi trovare i punti più vicini delle tue curve. Puoi utilizzare QwtPlotCurve :: closestPoint(), ma nella maggior parte dei casi puoi trovare un'implementazione molto più veloce a seconda delle caratteristiche dei tuoi dati. Quando è necessario confrontare la posizione del mouse con le linee tra i punti è necessario la posizione dei pixel di questi punti (utilizzare QwtPlot :: canvasMap). Forse guardando il CanvasPicker dell'esempio di eventfilter aiuta.

L'ho implementato nella mia classe, che è una sottoclasse di QwtPlot. Nel costruttore ho il seguente:

QwtPlotPicker* plotPicker = new QwtPlotPicker(this->xBottom, this->yLeft, QwtPicker::CrossRubberBand, QwtPicker::AlwaysOn, this->canvas()); 
QwtPickerMachine* pickerMachine = new QwtPickerClickPointMachine(); 
plotPicker->setStateMachine(pickerMachine); 
connect(plotPicker, SIGNAL(selected(const QPointF&)), this, SLOT(onSelected(const QPointF&))); 

Ora nella mia classe (dove il puntatore this si riferisce a) dovrei implementare lo slot onSelected(const QPointF&) che darà coordina la trama.