如何在QLabel中设置QImage的缩进?

3

我有一个 QImage 并且想将它设置在一个 Qlabel 上。为此我使用了 QPixmap。大致代码如下:

QPixmap pixmap(QPixmap::fromImage(my_qimage));
mLabel->setIndent(42);
mLabel->setPixmap(pixmap);

我想在42个像素的缩进后设置图像,但使用Pixmap无法实现。虽然我尝试了相同的文本方式。

mLabel->setIndent(42);
mLabel->setText("image");

并且它正常工作。

所以我的问题是如何在 QLabel 上设置图像并在缩进几个像素后显示? 任何帮助将不胜感激。如果有其他方法可以实现这种行为,请提出建议。

1个回答

2

你可能正在寻找 setMargin(int) property 属性: 执行:

mLabel->setMargin(42);

应该能解决你的问题。

但是,如果您超过了一半的 QLabel 宽度(在这个320宽度的 QLabel 中为160像素),QPixmap 图片将不会显示。在这种情况下,有必要将对齐属性更改为 Right ,方法如下:

mLabel->setAlignment(Qt::AlignLeading|Qt::AlignRight|Qt::AlignVCenter);

如果您需要设置一个高于QLabel一半大小的边距,则需要进行以下计算:
width_of_label - desiredmargin + width_of_image;

在这个例子中,一个宽度为320像素的QLabel和一个20像素宽度的图像,使用220作为期望的边距,下一步是:
320 - 220 - 20 = 80;

所以在设置前一个对齐方式后,您应该使用:

mLabel->setMargin(80);

不,我已经尝试过setMargin(),但它没有起作用。我的标签宽度为320像素。但是如果我给一个220像素的边距,它不会显示图像。虽然对于小值(如42),它会显示带有一些缩进的图像。 - The Philomath
图片的尺寸是多大? - jgorostegui
谢谢您的回复。现在我正在尝试使用mLabel->setAlignment(Qt::AlignLeft);将图像显示在42个像素后,然后使用mLabel->setPixmap(pixmap);。但是现在即使有42个边距,它也不显示图像。 - The Philomath
不知道你的代码出了什么问题。我向你展示我的示例。左列使用AlignLeft,右列使用AlignRight。大小为20x20的图像位于320x320标签中。 - jgorostegui
让我们在聊天中继续这个讨论 - jgorostegui
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接