我在学习Qt
。我没有意识到Qt 教程第 11 章的练习,其中指出“在空中射击时更改大炮的颜色”。我选择在paintCannon 函数中实现更改(如下)。我下面的代码有什么问题?
void CannonField::paintCannon(QPainter &painter)
{
painter.setPen(Qt::NoPen);
if (autoShootTimer->isActive()){
std::cout << "in paintCannon yellow; " << std::endl;
// This gets called everytime `paintEvent` occurs.
// Please see the code in the web page (http://doc.trolltech.com/4.3/tutorial-t11-cannonfield-cpp.html) for this part.
painter.setBrush(Qt::yellow);
}else{
std::cout << "in paintCannon blue; " << std::endl;
painter.setBrush(Qt::blue);
}
painter.save();
painter.translate(0, height());
painter.drawPie(QRect(-35, -35, 70, 70), 0, 90 * 16);
painter.rotate(-currentAngle);
painter.drawRect(barrelRect);
painter.restore();
}
由于我首先怀疑Qpainter
'ssave
并且restore
可能做错了什么,所以我将它们注释掉,最终没有重新绘制。
谢谢。