作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想要一个 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/
我是一名优秀的程序员,十分优秀!