Qt Qbrush проблема - PullRequest
       45

Qt Qbrush проблема

3 голосов
/ 08 марта 2010

В чем разница в следующем коде,

  QGraphicsScene * scence = new QGraphicsScene();

   QBrush *brush = new QBrush((QColor(60,20,20)));
   scence->setBackgroundBrush(*brush);

   QGraphicsView *view = new QGraphicsView();
   view->setScene(scence);
   //view->setBackgroundBrush(*brush);
   //view->setCacheMode(QGraphicsView::CacheBackground);
   view->showFullScreen();

дает черный цвет фона

  QGraphicsScene * scence = new QGraphicsScene();

   QBrush *brush = new QBrush();
   brush->setColor(QColor(60,20,20));
   scence->setBackgroundBrush(*brush);

   QGraphicsView *view = new QGraphicsView();
   view->setScene(scence);
   //view->setBackgroundBrush(*brush);
   //view->setCacheMode(QGraphicsView::CacheBackground);
   view->showFullScreen();

ничего не дает.

Ответы [ 2 ]

7 голосов
/ 08 марта 2010

Как говорит Qt doc:

QBrush :: QBrush ()
Создает черную кисть по умолчанию со стилем Qt :: NoBrush (т.е. эта кисть не будет заполнять фигуры).

Во втором примере вы должны установить стиль объекта QBrush с помощью setStyle (), например, с помощью Qt :: SolidPattern .

   QGraphicsScene * scence = new QGraphicsScene();
   QBrush *brush = new QBrush();
   brush->setStyle(Qt::SolidPattern); // Fix your problem !
   brush->setColor(QColor(60,20,20));
   scence->setBackgroundBrush(*brush);

   QGraphicsView *view = new QGraphicsView();
   view->setScene(scence);
   //view->setBackgroundBrush(*brush);
   //view->setCacheMode(QGraphicsView::CacheBackground);
   view->showFullScreen();

Надеюсь, это поможет!

0 голосов
/ 01 ноября 2017

Альтернативный подход, который достигает того же результата, заключается в том, чтобы поместить цвет в конструктор кисти и применить стиль по умолчанию для твердого тела:

 QBrush *brush = new QBrush (QColor (60, 20, 20));

Конструкторы, принимающие цвет, имеют необязательный параметр для стиля, который по умолчанию равен Qt :: SolidPattern. Оба подхода дают один и тот же результат, но этот использует на две строки меньше кода.

...