Ich habe glücklicherweise selbst eine Lösung gefunden:
MainWindow.cpp
basis_canvas = new PaintBasis(this);
ui->setupUi(this);
this->setStyleSheet("background-color: #C0A080");
basis_canvas->setGeometry(0, 0, 1900, 2205);
//ScrollArea
QScrollArea* scrollArea = new QScrollArea;
scrollArea->setWidget(basis_canvas);
setCentralWidget(scrollArea);
nd = new ND();
pfd = new PFD();
for (int i = 0; i <= 3; i++)
{
monitor[i] = new Monitor(basis_canvas);
monitorleer[i] = new MonitorLeer();
}
monitor[0]->setGeometry(10, 1070, 400, 400);
monitor[1]->setGeometry(420, 1070, 400, 400);
monitor[2]->setGeometry(1020, 1070, 400, 400);
monitor[3]->setGeometry(1020, 1480, 400, 400);
monitor[0]->SetMyChild(pfd);
monitor[1]->SetMyChild(nd);
monitor[2]->SetMyChild(monitorleer[2]);
monitor[3]->SetMyChild(monitorleer[3]);
Monitor.cpp
Monitor::Monitor(QWidget* parent) :
QWidget(parent)
{}
void Monitor::SetMyChild(QWidget* mychild)
{
mychild->setParent(this);
mychild->show();
}
Wenn ich z.B. über die Funktion SetMyChild zugreife und bspw. monitor[0]->SetMyChild(nd); schreibe, springt der nd-Inhalt zwar auf monitor[0] aber der monitor[1], der ja vorher nd hatte, wird dann schwarz. Für meinen Fall aber in Ordnung.