Qt Qbrush问题

时间:2010-03-08 11:33:07

标签: qt qt4 colors symbian brush

以下代码有什么区别,

  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 个答案:

答案 0 :(得分:7)

正如Qt医生所说:

QBrush :: QBrush()
使用样式Qt :: NoBrush构造一个默认的黑色画笔(即此画笔不会填充形状)。

在第二个示例中,您必须通过 setStyle ()设置QBrush对象的样式,例如使用 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();

希望它有所帮助!

答案 1 :(得分:0)

实现相同结果的另一种方法是将颜色放在画笔构造函数中,并应用默认的实体样式:

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

采用颜色的构造函数具有样式的可选参数,默认为Qt :: SolidPattern。两种方法都产生相同的结果,但是这一方法使用了两行代码。