以下代码有什么区别,
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();
它什么都没有。
答案 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。两种方法都产生相同的结果,但是这一方法使用了两行代码。