3

次のコードの違いは何ですか、

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

それは何も与えません。

4

2 に答える 2

8

Qtドキュメントが言うように:

QBrush :: QBrush()
スタイルQt :: NoBrushでデフォルトの黒いブラシを作成します(つまり、このブラシは図形を塗りつぶしません)。

2番目の例では、たとえばQt :: SolidPatternを使用して、 setStyle()でQBrushオブジェクトのスタイルを設定する必要があります。

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

それが役に立てば幸い !

于 2010-03-08T12:43:51.870 に答える
0

同じ結果を達成する別のアプローチは、ブラシコンストラクターに色を配置し、デフォルトのスタイルのソリッドを適用することです。

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

色を受け取るコンストラクターには、スタイルのオプションのパラメーターがあり、デフォルトはQt::SolidPatternです。どちらのアプローチでも同じ結果が得られますが、これは2行少ないコードを使用します。

于 2017-10-31T23:14:43.473 に答える