3 Stimmen

QRubberBand, wie man darauf zeichnet

Ich versuche, Zahlen auf dem QRubberBand-Objekt zu zeichnen. Ich habe eine Widget-Klasse mit dem QRubberBand-Objekt rectangleRubberBand;

Ich kann diesen Bereich usw. anzeigen, aber ich versuche, nicht auf dem Widget, sondern auf dem Bereich einige Zahlen zu zeichnen, zum Beispiel die Breite und Höhe dieses Bereichs. Wie kann ich das machen? Es dient dem Messzweck von Diagrammen.

7voto

Jablonski Punkte 18063

Es zieht nicht auf ein Gummiband, aber es tut, was du brauchst :

void MyButton::mouseMoveEvent(QMouseEvent *event)
{
    rubberBand->setGeometry(QRect(mypoint, event->pos()).normalized());//Begrenzungsbereich
    QToolTip::showText( event->globalPos(), QString("%1,%2")
                                             .arg(rubberBand->size().width())
                                             .arg(rubberBand->size().height()),this );
}

QToolTip wird in der Nähe des Cursors angezeigt. Es ändert sich dynamisch und zeigt tatsächliche Informationen über die Größe des Gummibands.

Ergebnis (der schwarze Bereich ist ein Cursor) :

Bildbeschreibung hier eingeben

Schwierigere Lösung: Unterklasse QRubberBand und implementiere paintEvent neu. Zum Beispiel:

Kopfzeile :

#ifndef RUBBERBAND_H
#define RUBBERBAND_H

#include 
#include 

class RubberBand : public QRubberBand
{
    Q_OBJECT
public:
    explicit RubberBand(Shape s, QWidget * p = 0);

signals:

protected:
    void paintEvent(QPaintEvent *event);

public slots:

};

#endif // RUBBERBAND_H

cpp :

#include "rubberband.h"
#include 
RubberBand::RubberBand(QRubberBand::Shape s, QWidget *p) :
    QRubberBand(s,p)
{
}

void RubberBand::paintEvent(QPaintEvent *event)
{
    QRubberBand::paintEvent(event);
    QPainter p(this);
    p.setPen(QPen(Qt::black,2));
    if(size().width() >10 && size().height() >10)
    {
        p.drawText(20,20,QString("%1,%2").arg(size().width()).arg(size().height()));
    }
}

Ergebnis:

Bildbeschreibung hier eingeben

Wählen Sie den für Sie am besten geeigneten Ansatz aus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X