2016-06-21 237 views
0

我试图让QLabel显示图像和一些垂直居中显示该图像的文本。 我想不出如何做到这一点。 我发现在互联网上的大多数源建议使用下面的代码:在QLabel中的图像附近垂直居中文本

ui->label->setText("<img src='c:/images.jpg' style='vertical-align:middle;'> Hello"); 

但是我得到的是this。 文本的底线居中靠近图像,但我喜欢的是文本的中间线要居中(如下所示:made in ms paint)。听起来像一个很常见的任务,但我无法找到任何答案。

我该如何做到这一点?

+0

您是否正在寻找一个样式表的解决方案或不一定?如果没有,您可以创建一个'QHBoxLayout'并在其中放置2个'QLabel':一个带有图片,一个带有标题 – IAmInPLS

+0

Stylesheets是首选。是的,我在考虑双标签解决方案,它只是看起来不正确 –

回答

0

我试图在我的QtCreator中运行它,它工作正常。所以,首先,您可以尝试以下方法:

  1. 检查图片大小。在paint.net或类似的东西中打开它。也许最上面的图像是不可见的空白区域。那些,图像的实际大小看起来像一个拉长的矩形,其中可见部分在底部。尝试其他图像。
  2. 尝试将格式jpg更改为png。我用jpg格式显示图像时遇到了问题,所以我总是尝试使用png。
  3. 风格问题。 Qt可能对CSS风格不正确,因为它不是Qt的一部分。我在Qt 5.4.0版本中测试过。如果您的年龄较大,可能是更新它的时间。
+0

图像是一个正方形,它位于:http://imgur.com/hHLLDD4。我尝试了JPG和PNG - 结果相同。不过,我正在使用Qt 5.6。你可以发表一个截图吗?也许你使用的字体太小,无法注意到文本是以文本的底线(这是我现在拥有的)还是以它的中心线为中心(这正是我试图实现的目标)?尝试为标签设置更大的字体大小? –

+0

@ O.W.Grant - 嗯...是的,如果我增加字体大小的标签看起来像这样:http://imgur.com/sxX7tSF。所以,但如果我在jsfiddle中使用这个代码:jsfiddle.net/nr6Lme5n它的工作原理。我认为原因是在Qt垂直对齐的标签不起作用。如果可以找到解决方案,我会尝试其他变体并写入。 – steell911