gpt4 book ai didi

c++ - 如何让 QLabel 扩展到全宽?

转载 作者:可可西里 更新时间:2023-11-01 18:29:35 25 4
gpt4 key购买 nike

我想要一个 QLabel 扩展到容器的整个宽度,而不管内容是什么。 (我想要这个,因为我动态设置文本并稍后添加小部件,这导致它切断了部分文本)

Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->setFixedSize(100,100);
QHBoxLayout *layout = new QHBoxLayout;
this->setLayout(layout);
QLabel *label = new QLabel;
label->setStyleSheet("background-color:blue");
label->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
label->setText(tr("test"));
layout->addWidget(label, 0, Qt::AlignTop | Qt::AlignLeft);
}

这段代码显示蓝色框没有展开到整个宽度,为什么?

最佳答案

你必须设置:

layout->setContentsMargins(0,0,0,0);

默认情况下,每个 QWidget 或 QFrame 在每个方向上添加 15 像素的边距。

主要问题是在将小部件添加到布局时设置对齐方式。请改用 label->setAlignment

layout->addWidget(label);

我编译了您的代码,它适用于这些更改。

这是最小的例子:

#include <QApplication>
#include <QtGui>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget* w = new QWidget;
w->setFixedSize(100,100);
QHBoxLayout* layout = new QHBoxLayout;
layout->setContentsMargins(0,0,0,0);
w->setLayout(layout);
QLabel* label = new QLabel;
label->setAlignment(Qt::AlignTop | Qt::AlignLeft);
label->setContentsMargins(0,0,0,0);
label->setStyleSheet("background-color:blue");
label->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
label->setText("test");
layout->addWidget(label);
w->show();
return a.exec();
}

关于c++ - 如何让 QLabel 扩展到全宽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com