gpt4 book ai didi

c++ - Qt 小部件(带布局)空间。它是什么?如何去除?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:25 25 4
gpt4 key购买 nike

我编写了一个使用小部件作为容器(用于其他小部件)的程序。因为容器的内容随着程序的生命周期而变化,所以容器小部件有一个与之关联的布局,因此它可以适本地调整大小。问题是容器似乎占用了一些空间。

在下面的程序中,我重现了这个问题:我有一个带有几个标签的组,其中一个包含在一个容器中(小部件 w - 及其布局 t - 包括标签“那是什么额外的空间?”)。我的目标是让所有标签之间的间距相同,无论它们是否在容器中。 (容器不应该占用空间)

我还尝试为小部件的不同部分着色。我的填充在哪里?小部件之间(蓝色之间)的额外空间是多少。我该如何删除它?

 #include <QApplication>
#include <QtCore>
#include <QMainWindow>
#include <QGroupBox>
#include <QHBoxLayout>
#include <QLabel>
#include <QMdiArea>
#include <QMdiSubWindow>

#include <stdlib.h>

QMdiArea* g1;
QGroupBox* g1a;

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow* main_window = new(QMainWindow);
main_window->resize(200, 200);
main_window->setWindowTitle("Hello");

g1a = new QGroupBox("G1A", g1);
QVBoxLayout *g1a_l = new QVBoxLayout(g1a);
g1a_l->setSpacing(0);
main_window->setCentralWidget(g1a);

g1a_l->addWidget((QLabel*)new QLabel(" Nice Label1"));
g1a_l->addWidget((QLabel*)new QLabel(" Nice Label2"));
QWidget* w=new QWidget(0);
w->setStyleSheet( "border: 2 solid blue; padding: 2 solid yellow;" );
QVBoxLayout* t=new QVBoxLayout(w);
t->setSpacing(0);
t->addWidget(new QLabel("What is that extra space??",w));

g1a_l->addWidget(w);
g1a_l->addWidget((QLabel*)new QLabel(" Nice Label3"));
g1a_l->addWidget((QLabel*)new QLabel(" Nice Label4"));

//sub_window->adjustSize();
main_window->show(); //How to I get that to recaclulate the size of its contents?
return app.exec();
}

最佳答案

这是 contentsMargin

删除它:

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

关于c++ - Qt 小部件(带布局)空间。它是什么?如何去除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9129324/

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