TL; DR: у меня рост / сжатие, возможно, с использованием встроенных форм внутри главного окна. Я не уверен, что попробовать дальше.
Хорошо, у меня есть еще одна проблема с проклейкой.
Это пример приложения о том, что я пытаюсь сделать:
Когда я нажимаю на различные параметры панели инструментов, я намерен соответствующим образом изменить содержимое центрального виджета. Может быть, я должен просто использовать виджет вкладки, но я хотел сделать это таким образом.
В простейшей форме с макетом виджета, подобным следующему:
Я установил макет центрального виджета на «Горизонтальный», а внутренний виджет на «FormLayout», а затем установил правила расширения внутреннего виджета для расширения любых расширяемых полей. Когда я изменяю размер окна, простое редактирование строки расширяется и сжимается по желанию.
Когда я щелкаю значок шины на панели инструментов, я заменяю содержимое центрального виджета отдельной панелью. На этой панели есть виджет с макетом формы, а также он может быть развернут и свернут. Вот правила размещения второй панели:
Мой триггерный код делает это:
currentCenter = ui->innerWidget; // In the constructor
currentCenter->hide();
if (v1Form == nullptr) {
v1Form = new V1Form(ui->centralWidget);
}
v1Form->show();
currentCenter = v1Form;
Я пробовал различные заказы на это, и я пытался использовать setCentralWidget (). Во всех случаях новая центральная область остается фиксированного размера, даже если исходная область расширяется и разрушается.
Что работает: я могу легко изменить внутреннее содержание для разных форм. Это отлично работает. (Потребовалось время, чтобы понять это.)
или я могу создавать простые всплывающие формы, которые правильно растут и уменьшаются.
Что не работает, так это увеличение / уменьшение, когда я встраиваю свою форму в центральный виджет или использую setCentralWidget.
Я не уверен, что еще попробовать.