Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: deMax от Декабрь 02, 2013, 13:20



Название: Автоматический размер виджета вне компоновщика
Отправлено: deMax от Декабрь 02, 2013, 13:20
Внутри главного окна нужно отобразить отдельный виджет.
Код:
MyWidget::MyWidget(QWidget *parent) :
    QWidget(parent, Qt::FramelessWindowHint) {
    QBoxLayout *layout = new QVBoxLayout(this);

    labels.resize(L_COUNT);
    for(int i=0; i<L_COUNT; ++i) {
        layout->addWidget(new QLabel(lHeader[i]));
        layout->addWidget(labels[i] = new QLabel);
    }
setBaseSize(200,400);
}

Если parent=0, в отдельном окне показывается нормальный по размеру виджет, если parent=mainWindow то размер окна (100,30). Размер изменить можно, но можно ли чтобы он автоматически создавался?


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: Majestio от Декабрь 02, 2013, 13:27
Не совсем понятно: нужно фиксированный размер, либо подогнанный под родителя?


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: deMax от Декабрь 02, 2013, 14:31
Я ее ручками размещаю на форме move(x,y). Нужен размер подогнанный под содержимое самого виджета.
Сделал пока так
myWidget->move(x,y);
myWidget->resize(myWidget->sizeHint());


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: Majestio от Декабрь 02, 2013, 14:39
Я ее ручками размещаю на форме move(x,y). Нужен размер подогнанный под содержимое самого виджета.
Сделал пока так
myWidget->move(x,y);
myWidget->resize(myWidget->sizeHint());

Вообще-то для этого компоновщики и придуманы :)

1) Если размещаешь внутри другого виджета, то:

Код:
...
QVBoxLayout *L = new QVBoxLayout();
L->addWidget(твой виджет)
setLayout(L)
...

2) Если размещаешь внутри QMainWindow, то:

Код:
...
setCentralWidget(твой виджет)
...

В обоих случаях виджет будет растягиваться по "родительскому".


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: deMax от Декабрь 02, 2013, 14:56
Majestio, не то.
у меня уже есть компоновщик и основная форма уже скомпонована. Этот виджет рисуется поверх виджета с opengl(перекрывает маленькую часть виджета), он не входит в компоновку формы, но авторазмер ему сделать хочется.


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: Majestio от Декабрь 02, 2013, 15:16
Majestio, не то.
у меня уже есть компоновщик и основная форма уже скомпонована. Этот виджет рисуется поверх виджета с opengl(перекрывает маленькую часть виджета), он не входит в компоновку формы, но авторазмер ему сделать хочется.

Кинь скриншотик, чтобы представлять точно о чем речь.


Название: Re: Автоматический размер виджета вне компоновщика
Отправлено: deMax от Декабрь 03, 2013, 07:48
Скриншот не могу скинуть. Вверху есть панели инструментов, внизу панель инструментов, в центре некое изображение с объектами(если пользователь выбирает объект, справа показывается виджет с информацией по выбранному объекту. Виджет с информацией может пропадать, не должен быть отдельным окном.
Интересно почему не срабатывает авторазмер.