C++ 如何使QLabel扩展到全宽?

C++ 如何使QLabel扩展到全宽?,c++,qt,C++,Qt,我想要一个QLabel扩展到容器的全宽,而不管内容如何。(我之所以要这样做,是因为我动态地设置了文本,并在以后添加了小部件,这会导致它切断部分文本) 此代码显示蓝色框没有扩展到整个宽度,为什么?必须设置: layout->setContentsMargins(0,0,0,0); 默认情况下,每个QWidget或QFrame在每个方向上添加15个像素的边距 主要问题是在将小部件添加到布局时设置对齐方式。使用label->setAlignment layout->addWidget(l

我想要一个
QLabel
扩展到容器的全宽,而不管内容如何。(我之所以要这样做,是因为我动态地设置了文本,并在以后添加了小部件,这会导致它切断部分文本)

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

必须设置:

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();
}
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QWidget*w=新的QWidget;
w->setFixedSize(100100);
QHBoxLayout*布局=新的QHBoxLayout;
布局->设置内容边缘(0,0,0,0);
w->setLayout(布局);
QLabel*标签=新的QLabel;
标签->设置对齐(Qt::AlignTop | Qt::AlignLeft);
标签->设置内容边缘(0,0,0,0);
标签->设置样式表(“背景色:蓝色”);
标签->设置策略(QSizePolicy::最小扩展,
QSizePolicy::最小扩展);
标签->设置文本(“测试”);
布局->添加小部件(标签);
w->show();
返回a.exec();
}

Edit现在应该可以解决你的问题了哈,你说得对。是对齐导致了问题。我刚刚添加了真正的修复,ty:)
#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();
}