Вопрос

Я разработал QMainWindow с QtCreator's дизайнер.Он состоит из центрального виджета по умолчанию ( QWidget), который содержит QVBoxLayout со всеми остальными виджетами в нем.Теперь все, чего я хочу, это чтобы QVBoxLayout автоматически занимает все пространство центрального прямоугольника виджетов.

Как я могу это сделать?Я не нашел никаких полезных свойств ни в центральных свойствах виджетов, ни в QVBoxLayout's те.

Это было полезно?

Решение

Вам не нужно создавать QVBoxLayout вручную.Просто выберите центральный QWidget и нажмите кнопку создания макета.

alt text

Другие советы

Если вы хотите сделать это с помощью кода вместо использования QtCreator, вы можете установить макет в QWidget а затем установите QWidget в качестве центрального виджета главного окна вот так:

#include <QtGui>
#include <QWidget>
#include <QHBoxLayout>
#include "mainwindow.h"

MainWindow::MainWindow() {  

        // Set layout
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(myWidget1);
        layout->addWidget(myWidget2);

        // Set layout in QWidget
        QWidget *window = new QWidget();
        window->setLayout(layout);

        // Set QWidget as the central layout of the main window
        setCentralWidget(window);

}

Добавьте хотя бы один виджет на свой MainWindow.Затем выберите свое окно, щелкнув по нему, и нажмите кнопку VerticalLayout Кнопка вверху QTCreator.Вертикальный макет автоматически добавляется в центральный виджет и заполняет всю поверхность.

На этот вопрос уже был дан ответ, но лично я предпочитаю сохранить все элементы управления. и макеты, добавляемые в форму вручную.Я не добавляю элементы управления в файлы классов, я просто подключаю сигналы/слоты, чтобы скрыть/показать виджеты, соответствующие логике класса, внутри класса.

Чтобы вручную добавить макет к любому виджету, необходимо сначала добавить хотя бы один дочерний виджет/элемент управления.Мне это было не совсем понятно, и я сначала пытался добавить макет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top