2017-03-19 2 views
0

Ich benutze Qt 5.8. Ich habe mein benutzerdefiniertes QFrame (nennen Sie es MyQFrame), das aus mehreren anderen QWidgets besteht und eine andere Instanz meines benutzerdefinierten MyQFrame enthalten kann (und wird). Ich habe die Mindestgröße für MyQFrame festgelegt. MyQFrame verwendet QGridLayout als Layout.QScrollArea mit benutzerdefiniertem QFrame

Dieser MyQFrame befindet sich innerhalb von QScrollArea in QTabWidget. QScrollArea wird auf die Größe eingestellt (setWidgetResizable(true)). In MyQFrame habe ich versucht, die Größe zu erweitern (setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);), aber es war ohne Wirkung.

Dies ist (Abstraktion), wie schaffe ich QTabWidget und QScrollArea:

QTabWidget* tabWidget = new QTabWidget(); 
QScrollArea* firstTab = new QScrollArea(); 
firstTab->setWidgetResizable(true); 
tabWidget->addTab(firstTab, "first tab"); 
MyQFrame* myFrame1 = new MyQFrame(); 
firstTab->setWidget(myFrame1); 
// ... adding other MyQFrames inside this one using methods in MyQFrame ... 

kann ich bewegen Sie sich nicht Bereich arbeiten. Anstatt die Eltern der verschachtelten MyQFrames zu erweitern und die Bildlaufleiste hinzuzufügen, wird das letzte Kind von anderen MyQFrames überlagert. Sieht aus, als ob ich etwas wie setWidgetResizable für MyQFrames verpasse, aber diese Methode ist nur in QScrollArea. Ich habe keine Ahnung, was ich jetzt versuchen sollte. Ich bin noch ziemlich neu in diesem Bereich.

Es sollte aus dem Bild unten klarer sein.

overlaping

+0

Ich habe versucht, minimale Größe auf einen verrückten Wert in MyQFrame (3000x3000) einzustellen und dann Rollbalken erschienen. MyQFrames überlappten jedoch ziemlich schlecht. – Pyro

Antwort

0

Wie ich schon sagte, ich QGridLayout in MyQFrame verwenden. Ich musste die Größenbeschränkung für dieses Layout auf die folgende Mindestgröße festlegen: layout->setSizeConstraint(QLayout::SetMinimumSize);. Jetzt funktioniert es wie ich wollte.

Verwandte Themen