2017-02-02 1004 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个,但是评论显示它是对某些东西的修补程序...... 不幸的是,这不能解决问题,它只是解释它的来源。但它可能有助于找到一个比“让所有图标变得奇怪”更好的解决方案。