2013-07-18 136 views
5

我重新實現了QGraphicsView使場景用鼠標滾輪事件放大。現場包含幾個QGraphicsPixmapItem。輪子事件調用QGraphicsView :: scale(qreal sx,qreal sy)抗鋸齒功能不能在QGraphicsView中使用查看

一切工作完美,但渲染。當我縮小(場景變小)時,出現鋸齒。我試着設置渲染提示作爲重新實現的QGraphicsView構造如下:

ImageViewer::ImageViewer(QWidget * parent) : 
    QGraphicsView(parent) 
{ 
    setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); 
} 

我仍然可以看到這些文物。我怎樣才能擺脫這一點?

+0

你可以發佈正在發生的事情的截圖嗎?你是否在這些物品上設置了緩存策略? – peppe

+0

謝謝@peppe!我沒有設置任何關於緩存的內容,所以我猜這是默認設置。以下是[之前]的示例(https://lh6.googleusercontent.com/-e2pH06jhy94/Ue09l8A1SWI/AAAAAAAAY08/YGa-wj9ollY/w958-h599-no/Fullscreen+capture+7222013+100003+AM.jpg )(1:1像素比例)和[之後](https://lh4.googleusercontent.com/-PZJVX0jl6yw/Ue09mo_Iu2I/AAAAAAAAY1E/nMf28uA9MlE/w958-h599-no/Fullscreen+capture+7222013+100007+AM.jpg) (小於1:1像素比例)縮小。你會在同心圓中看到一些別名。 – Algo

回答

3

請參閱我的意見this question

基本上你必須撥打setTransformationMode(Qt::SmoothTransformation)上的QGraphicsItem你想要的抗鋸齒適用於。

在視圖上調用setRenderHints對我來說也不起作用。

+0

所以沒有辦法獲得antialiased背景?編輯:Nm是我的代碼中的錯誤。 – Timmmm