2017-02-02 71 views
1

我創建了一個簡單的10×10的黑盒子,並將其加入到QToolButton如下:如何將圖標居中在QToolButton中?

QIcon minIcon; 
minIcon.addFile("c:/tmp/black10x10.png"); 
minButton = new QToolButton; 
minButton->setIcon(minIcon); 

然而,它在屏幕上顯示左移(放大爲方便起見圖像):

a reasonably misaligned icon

一些在Gimp中眯着眼睛告訴我左邊的灰色區域是放大的56個像素,右邊的灰色區域是68.即使沒有放大,這種不對齊也非常明顯 - 這就是我首先發現它的原因。那麼,我該如何居中這個圖標?

P.S.嘗試使用沒有文字的QPushButton。同樣的效果。

+0

這可能爲標籤節省空間。你是否嘗試過一個負的左側邊距? –

+0

它看起來好像你試圖在一個25x25(ish)矩形中居中10x10的圖像。情況就是這樣,無論哪種方式都會出現半像素抖動。 –

+0

@Nicolas Holthaus'minButton-> setContentsMargins()'似乎沒有任何影響,無論我使用什麼參數。此外,這將是硬編碼,我不得不在每個平臺和版本上進行測試。 – sigil

回答

0

這可能是一個有點晚了,但我偶然發現了同樣的問題,發現下面的代碼片段在QTS qstylesheet.cpp

case CT_ToolButton: 
     if (rule.hasBox() || !rule.hasNativeBorder() || !rule.baseStyleCanDraw()) 
      sz += QSize(3, 3); // ### broken QToolButton 

這會增加你甚至大小的圖標爲奇數大小和因此沒有居中。我不確定爲什麼還有3個,但是評論顯示它是對某些東西的修補程序...... 不幸的是,這不能解決問題,它只是解釋它的來源。但它可能有助於找到一個比「讓所有圖標變得奇怪」更好的解決方案。