QRubberBand, как рисовать на нем

Я пытаюсь нарисовать цифры на QRubberBand объект. У меня есть виджет класса с QRubberBand объект rectangleRubberBand;

Я могу показать эту область и т. Д., Но я пытаюсь рисовать на этой области не на виджете несколько чисел, например ширина и высота этой области. Как я могу это сделать? Это для измерения цели графиков.

2

Решение

Это не рисунок на резинке, но он делает то, что вам нужно:

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

QToolTip отображается рядом с курсором. Он динамически изменяется и отображает актуальную информацию о размере резинки.

Результат (черная область — курсор):

введите описание изображения здесь

Более сложное решение: подкласс QRubberBand и переопределение paintEvent, Например:

Заголовок:

#ifndef RUBBERBAND_H
#define RUBBERBAND_H

#include <QRubberBand>
#include <QPaintEvent>

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 <QPainter>
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()));
}
}

Результат:

введите описание изображения здесь

Выберите лучший подход для вас.

5

Другие решения


По вопросам рекламы [email protected]