Ich habe jetzt nach vielen Herumprobieren die Lösung gefunden.
Die Reihenfolge ist anscheinend wichtig:
Funktionierendes Schema:
QLayout anlegen/erstellen (new)
Layout einem Widget zuweisen
Mit widget->layout() die entsprechenden Parameter setzen
Nicht funktionierendes Schema:
QLayout anlegen/erstellen (new)
Parameter setzen
Layout einem Widget zuweisen
Und außerdem haben die Funktionen setMargin() und setSpacing() gefehlt.
Anbei der funktionierende Codeabschnitt void WindowMDI::createLayout(void):
void WindowMDI::createLayout(void)
{
QLayout *oldLayout;
QVBoxLayout *ptrLayout;
m_menubar = nullptr;
m_statusbar = nullptr;
oldLayout = layout();
if (oldLayout != nullptr)
delete oldLayout;
m_layoutMain = new QVBoxLayout(this);
m_layoutCenter = new QHBoxLayout();
m_layoutCenter->setContentsMargins(0, 0, 0, 0);
m_layoutCenter->setSpacing(0);
m_layoutCenter->setMargin(0);
m_widgetLeft = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetLeft);
m_widgetLeft->setLayout(ptrLayout);
m_widgetLeft->setContentsMargins(0, 0, 0, 0);
m_widgetLeft->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetLeft->layout()->setSpacing(0);
m_widgetLeft->layout()->setMargin(0);
m_widgetCenter = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetCenter);
m_widgetCenter->setLayout(ptrLayout);
m_widgetCenter->setContentsMargins(0, 0, 0, 0);
m_widgetCenter->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetCenter->layout()->setSpacing(0);
m_widgetCenter->layout()->setMargin(0);
m_widgetRight = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetRight);
m_widgetRight->setLayout(ptrLayout);
m_widgetRight->setContentsMargins(0, 0, 0, 0);
m_widgetRight->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetRight->layout()->setSpacing(0);
m_widgetRight->layout()->setMargin(0);
m_layoutCenter->addWidget(m_widgetLeft);
m_layoutCenter->addWidget(m_widgetCenter);
m_layoutCenter->addWidget(m_widgetRight);
m_widgetMenubar = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetMenubar);
m_widgetMenubar->setLayout(ptrLayout);
m_widgetMenubar->setContentsMargins(0, 0, 0, 0);
m_widgetMenubar->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetMenubar->layout()->setSpacing(0);
m_widgetMenubar->layout()->setMargin(0);
m_widgetToolbar = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetToolbar);
m_widgetToolbar->setLayout(ptrLayout);
m_widgetToolbar->setContentsMargins(0, 0, 0, 0);
m_widgetToolbar->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetToolbar->layout()->setSpacing(0);
m_widgetToolbar->layout()->setMargin(0);
m_widgetCommand = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetCommand);
m_widgetCommand->setLayout(ptrLayout);
m_widgetCommand->setContentsMargins(0, 0, 0, 0);
m_widgetCommand->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetCommand->layout()->setSpacing(0);
m_widgetCommand->layout()->setMargin(0);
m_widgetStatusbar = new QWidget(this);
ptrLayout = new QVBoxLayout(m_widgetStatusbar);
m_widgetStatusbar->setLayout(ptrLayout);
m_widgetStatusbar->setContentsMargins(0, 0, 0, 0);
m_widgetStatusbar->layout()->setContentsMargins(0, 0, 0, 0);
m_widgetStatusbar->layout()->setSpacing(0);
m_widgetStatusbar->layout()->setMargin(0);
m_layoutMain->addWidget(m_widgetMenubar);
m_layoutMain->addWidget(m_widgetToolbar);
m_layoutMain->addLayout(m_layoutCenter);
m_layoutMain->addWidget(m_widgetCommand);
m_layoutMain->addWidget(m_widgetStatusbar);
setLayout(m_layoutMain);
setContentsMargins(0, 0, 0, 0);;
layout()->setContentsMargins(0, 0, 0, 0);
layout()->setSpacing(0);
layout()->setMargin(0);
}