从 QLabel 顶部移除间隙
Posted
技术标签:
【中文标题】从 QLabel 顶部移除间隙【英文标题】:Removing gap from top of QLabel 【发布时间】:2017-08-18 07:26:30 【问题描述】:我在我的 Qlabel 上显示图像。现在它在窗口顶部和 QLabel(image) 顶部之间有一个间隙,如下所示:
我不想要那个差距,我的 UI 当前 UI 是这样的:
label_image
是包含图像的 QLabel 的对象名称。
我的构造函数代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
this->setFixedSize(700,700);
ui->setupUi(this);
ui->centralWidget->layout()->setMargin(0);
ui->centralWidget->layout()->setSpacing(0);
void MainWindow :: paintEvent(QPaintEvent * e)
QMainWindow::paintEvent(e);
if(1)
QImage image("/Users/arqam/Desktop/ImageToCartoon/input/ElonMusk.jpeg");
//some redundant code
ui->label_image->setPixmap(QPixmap::fromImage(image));
使用centralWidget
中的更改,如图所示,我能够让图像从最左侧开始,但无法让图像从顶部开始。
编辑:我需要的是我的图像从top left
开始,左边部分已经完成,只剩下顶部。
我的 UI 的 XML 部分:https://pastebin.com/thxhc2Mj
【问题讨论】:
@eyllanesc 哦,抱歉,这是冗余代码的一部分,现在编辑了代码。我正在缩放图像,然后在 QLabel 中显示,我想这不会造成任何差异。 @eyllanesc 是的,基本上我希望图像从左上角开始,以便起始坐标相同。 @eyllanesc 我在paintevent中进行了一些操作,基本上在坐标上绘制了一些点,为此我希望Qlabel也从左上角开始。 只有我一个人,还是label_image
似乎不受任何布局管理?
@Polentino 我也用 XML 代码编辑了这个问题,在那里你可以看到它在 QVBoxLayout 下。
【参考方案1】:
要出现在顶部,请使用setAlignment()
,在您的情况下
ui->label_image->setAlignment(Qt::AlignTop);
【讨论】:
完美。I was earlier trying with ui->label_image->layout()->setAlignment(Qt::AlignTop);
,因此没有得到结果。
一件事是布局的对齐方式,另一件事是QLabel内容的对齐方式:P
是的,谢谢你的回答。虽然缩放 QT 有时会在横向模式下打开图像:ibb.co/imSJSF 知道为什么会发生这种行为吗?
我认为原始图像是这样的,您可以以 zip 格式共享图像,这样互联网不会更改某些位,我在使用 iphone 拍摄图像时观察到相同的行为,检查图片的详细信息,不仅基于您的图片查看器。
是的,图像是由 iphone 自己拍摄的,但我主要在那些太大而无法调整大小并显示在 Qlabel 中的图像中看到这一点。但这仍然让人感觉很奇怪。【参考方案2】:
基于 cmets 和 xml 文件,我认为在添加 label_image
之后对 QBoxLayout::addStretch() 的简单调用就足够了。这将在标签和水平布局之间插入一个QSpacerItem,这将使图像保持在顶部,而其余按钮则保持在底部,即使您调整了小部件的大小。
【讨论】:
以上是关于从 QLabel 顶部移除间隙的主要内容,如果未能解决你的问题,请参考以下文章
在 iPad 上运行的 iPhone 应用程序中横向视图顶部的 20 像素间隙
Flutter监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )