Search code examples
qtqt4colorssymbianbrush

Qt Qbrush issue


What is the difference in the following code,

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

gives black color background

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

it gives nothing.


Solution

  • As the Qt doc says :

    QBrush::QBrush ()
    Constructs a default black brush with the style Qt::NoBrush (i.e. this brush will not fill shapes).

    In your second example, you have to set the style of the QBrush object by setStyle(), for example with 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();
    

    Hope it helps !