Я написал программу, которая использует виджеты в качестве контейнера (для других виджетов).Поскольку содержимое контейнера изменяется в течение всей жизни программы, виджет контейнера имеет связанный с ним макет, поэтому он правильно изменяет размер.Проблема в том, что контейнер, похоже, занимает некоторое место.
В следующей программе я воспроизвел проблему: у меня есть группа с несколькими метками, одна из которых включена в контейнер (виджет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();
}