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();
}