Пользовательская граница вокруг QGraphicsView

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

Я хочу границу своего GraphicsViewстать в точности как этот образ.

(рассмотрите изображение ниже, я хочу, чтобы верхний белый прямоугольник стал этой формой)введите описание изображения здесь

Я наследую класс от QGraphicsView и попытался нарисовать это изображение в обоих drawBackground а также paintEvent но ни один из них не работает.

Мой код:

.ч файл

class GraphicsTraxSuggestionView : public QGraphicsView {
Q_OBJECT
public:
GraphicsTraxSuggestionView(QWidget* widget);

protected:
//  void paintEvent(QPaintEvent *event);
void drawBackground(QPainter *p, const QRectF &rect);
private:

};

.файл cpp

GraphicsTraxSuggestionView::GraphicsTraxSuggestionView(QWidget* widget)
: QGraphicsView(widget)
{
//setFrameShadow(QFrame::Raised);
setFrameStyle(QFrame::NoFrame);
setStyleSheet("QGraphicsView { border-style: none; }");
}
void GraphicsTraxSuggestionView::drawBackground(QPainter *painter, const QRectF &rect)
{
painter->drawImage(rect, QImage("suggestionBorder.png"));
}

результат моего кода: http://i.stack.imgur.com/r0waP.png

Любое предложение ?

1

Решение

1) Создать QGraphicsScene имея размер вашего изображения

2) Установите его как сцену представления

3) Нарисуйте в drawBackground как вы делаете сейчас

0

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

Я старался setMask() и теперь работает нормально.

GraphicsTraxSuggestionView::GraphicsTraxSuggestionView(QWidget* widget,QGraphicsScene* scene)
: QGraphicsView(widget),
scene_(scene)
{
setStyleSheet("background-color: transparent;");

QPixmap myPixmap = QPixmap(":/Game/Tiles//suggestionBorder.png").scaled
(scene_->sceneRect().size().width(),scene_->sceneRect().size().height());
setMask(myPixmap.mask());
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}

void GraphicsTraxSuggestionView::drawBackground(QPainter *painter, const QRectF &rect)
{
painter->drawImage(scene_->sceneRect(), QImage(":/Game/Tiles//suggestionBorder.png"));
}

результат:

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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector