2013-05-17 27 views
1

我有這樣一段代碼:如何在QpainterPath中使用QPen?

 QPainterPath groupPath; 
    QPen pen; // new 

    pen.setCosmetic(1); // new 

    groupPath.setPen(pen); // error (error: class "QPainterPath" has no member "setPen") 
    groupPath.moveTo(60.0, 40.0); 
    groupPath.arcTo(40.0, 35.0, 40.0, 10.0, 180.0, 180.0); 
    groupPath.moveTo(40.0, 40.0); 
    groupPath.lineTo(40.0, 80.0); 
    groupPath.arcTo(40.0, 75.0, 40.0, 10.0, 0.0, 180.0); 
    groupPath.lineTo(80.0, 80.0); 
    groupPath.lineTo(80.0, 40.0); 
    groupPath.closeSubpath(); 

如何使用setPen使用化妝品在我的代碼?

回答

1

你不能在QPainterPath使用setPen(),因爲它不是一個畫家,它只是一個路徑

您應該創建一個QPainter,就可以使用setPen(),然後繪製路徑:

QPainter painter(this); 
QPen pen; 
pen.setCosmetic(true); 
painter.setPen(pen); 

QPainterPath groupPath 
groupPath.moveTo(60.0, 40.0); 
groupPath.arcTo(40.0, 35.0, 40.0, 10.0, 180.0, 180.0); 
groupPath.moveTo(40.0, 40.0); 
groupPath.lineTo(40.0, 80.0); 
groupPath.arcTo(40.0, 75.0, 40.0, 10.0, 0.0, 180.0); 
groupPath.lineTo(80.0, 80.0); 
groupPath.lineTo(80.0, 40.0); 
groupPath.closeSubpath(); 

painter.drawPath(groupPath); 

此外,作爲@Andreas說,不需要pen.setCosmetic(true),因爲QPen()默認構造函數創建一個筆寬爲0,這已經是化妝品

+0

,如果我的繪圖與特殊場景對象相關,如何將畫家添加到場景中? – dhein

0

不知道你的實際問題是什麼,但一些言論:

  • 其實QPen::setCosmetic()需要一個bool參數; 1會工作,但true將是正確的。通過默認的構造函數
  • QPen s的寬度創建時0是化妝品默認

因此

  • 新創建QPen■找一個寬度的0pen.setCosmetic(true)不會有任何影響,你的筆應該是化妝品(意味着,具有與標尺因子無關的相同寬度)。

    最後,作爲@zakinster提到,QPainterPath沒有setPen()方法。

  • +0

    謝謝,但問題是我使用setPen函數時出現錯誤(錯誤:類「QPainterPath」沒有成員「setPen」 )。那麼我至少可以嘗試'false'來看看效果。 – www

    +1

    您應該將此類編譯器錯誤消息添加到您的問題 –