1
我在學習Qt
。我沒有意識到the exercise of chapter 11 of Qt tutorial,其中說:「當一個鏡頭在空中時,改變大炮的顏色。」我選擇在paintCannon函數中實現更改(如下所示)。我的代碼在下面有什麼問題?QPainter不改變顏色
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
的save
和restore
可能已經做錯事,我評論他們哪些結束了重畫什麼。
謝謝。
繪製的大炮是什麼顏色的? –
你的代碼是做什麼的?這與它應該做什麼有什麼不同?它是否會輸出'PaintCannon blue'(或'yellow'),然後使用不同的顏色,或者是什麼? –
@Jeremy Friesner大炮保持藍色,這是最初繪製的顏色。 – IsaacS