2011-07-08 47 views
1

我在寫一個QStyle在這裏,我將QProgressBar更改爲Slim單行,沒有文字。所以高度也會降低到5px。但是Widget Width將由佈局決定。我應該在「我的風格」的drawControl中做什麼來更改小部件高度?從QStyle改變Widget的大小

+1

我認爲簡單地調用setMaximumWidth(5pixels)和setMinimumWidth(5pixels)會更容易,無論佈局是什麼,它都會將寬度限制爲5個像素。 –

回答

1

我從來沒有寫過QStyle,但如果你想在drawControl內調整任何東西的大小,我會覺得很奇怪。通過快速查看文檔,我可能會錯誤地認爲您會覆蓋subElementRect,並根據當前寬度和您的首選高度返回矩形。我認爲這將被佈局活動調用,並在drawControl被調用時排序。

+0

我已經嘗試了所有3個ProgressBar相關的子元素案例'SE_ProgressBarGroove','SE_ProgressBarContents','SE_ProgressBarLabel'我正在返回高度爲5px且寬度相同的矩形。哪個不起作用。沒有變化它仍然是一樣的。 –

+0

對不起,沒有工作。希望更多的建議會出現。 –

+0

因此,在進度條小部件上設置最大高度爲5不起作用? –

1

您是否需要修復小部件的高度?或者只是繪製的高度永遠不會超過5像素?首先,在波蘭語功能上設置高度並調整策略的大小。對於第二種,重寫QStyle中的圖形以僅使用5個像素。執行繪圖的功能通常需要使用rects;如果正確覆蓋了適當的函數,則可以使用修改後的矩形來調用基類的繪製。不幸的是,我已經做了幾年QStyle的工作,所以我不確定這些功能究竟是什麼。