Dein Besipiel kompiliert nicht, außerdem kann es nicht funktionieren.
Code: Alles auswählen
QList <int> list;
list=splitter->sizes();
for(int i=0;i<splitter->size();i++)
{
if(!i)
splitter[i]=2;
else
splitter[i]=1;
}
splitter->setSize(list);
Wenn du iterieren willst, dann über liet und nicht splitter.
splitter->setSizes() und nicht setSize().
Und das Prinzip hast du auch nicht so ganz verstanden.
Wenn dein Splitter vertical ist, enthält sizes die Höhen der Widgets, bei horizontalem Splitter halt die Breiten.
Und ebenso sollten diese Werte beim Setzen dem entsprechen, was du haben willst.
Soll sich der Splitter in seiner Größe nicht ändern, musst du halt bei den Größen anpassen. Machst du das eine Widget um 10px größer, musst du das andere halt um 10px kleiner machen.
Ein weiteres Problem kann sein, dass dir auch noch die miimumSizePolicy der Widgets im Splitter in die Quere kommt, aber das sollte QSplitter für dich erledigen.