2013-12-18 113 views
1

我正在編寫一個使用Qt/C++的調度類型應用程序,並且希望在窗口的一部分中顯示每週時間表,並且隨着窗口大小的增加而具有此渲染比例。渲染將由包含文本的矩形組成,隨着顯示區域的增加,矩形應該很好地縮放,而文本應該保持相同的大小。在Qt中縮放圖形

我已經用QGraphicsScene和QGraphicsView進行了實驗,我可以製作矩形和文本縮放;然而,矩形縮放似乎很難看(伸展輪廓),我不希望文本可以縮放。

我懷疑我可能想將場景大小調整到顯示區域並重新繪製矩形和文本;但是,我不知道如何做到這一點 - QGraphicsScene似乎沒有響應resizeEvent。這甚至是正確的方法嗎?

+1

帶QLabel的常規'QHBoxLayout'似乎是令人滿意的。 –

+0

我一直在考慮不使用QGraphicsScene和QGraphicsView,但我希望這些渲染最終可打印。打印只使用佈局/其他小部件的區域是否可行/更容易? –

+0

Qt中的打印小部件[非常簡單](http://qt-project.org/faq/answer/how_can_i_print_a_widget)。 –

回答

0

我不知道醜陋的矩形比例是什麼(截圖可能會幫助我更好地理解你的意思有),但如果你不想文本部分向規模化,你可以完成通過調用setFlag (ItemIgnoresTransformations,true)在你的QTextGraphicItem對象上。

至於自動重新調整矩形響應窗口大小調整,你可能需要看看QGraphicsView::fitInView()方法的文檔:

縮放視圖矩陣和滾動滾動條,確保了 場景矩形矩形適合在視口內[...]通常從 調用fitInView()從resizeEvent()重新實現到 確保整個場景或場景的各個部分自動縮放 以適合視圖的新大小爲 調整大小。但請注意,如果新的 轉換切換滾動條的自動狀態,那麼從 resizeEvent()調用fitInView()會導致不必要的調整大小遞歸。您可以將 切換滾動條策略始終打開或始終關閉,以防止 this(請參閱horizo​​ntalScrollBarPolicy()和verticalScrollBarPolicy())。

+0

設置文本標誌的效果很好 - 謝謝! 我提到的「醜陋的縮放」問題是一個黑色的輪廓,它會出現在每個邊上並且寬度不均勻。我可以通過使用'rect1-> setPen(QPen(Qt :: NoPen))來解決這個問題;'有沒有辦法讓輪廓縮放,例如總是固定在說2px寬? –

+0

此外,矩形在縮放時看起來像「閃爍」1px左右。有沒有什麼辦法解決這一問題? –

+0

嘗試在將QPen對象傳遞給setPen()之前調用setCosmetic(true)。 –