Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ручное применение компоновщиков
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
AD
Не очень понимаю, в чем ошибка кода? Размер полосы прокрутки и ее местоположение, совсем не те, что я задаю вот в этом коде:
/// Создание полосы загрузки файлов
void TLV::createProgressBar()
{
    dockProgress = new QDockWidget(this);
    dockProgress -> setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetMovable);
    dockProgress -> setAllowedAreas(Qt::BottomDockWidgetArea);
    dockProgress -> setGeometry(x(), height() - 40, width() - 20, 80);
    
    h_layout = new QHBoxLayout(dockWidget);
    h_layout -> setSpacing(6);
    h_layout -> setMargin(11);
    h_layout -> setContentsMargins(0, 0, 0, 0);

    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(dockProgress -> sizePolicy().hasHeightForWidth());

    progressBar = new QProgressBar(dockProgress);
    progressBar -> setSizePolicy(sizePolicy);
    progressBar -> setBaseSize(QSize(dockProgress -> width(), 23));
    h_layout -> addWidget(progressBar);
    //progressBar -> setGeometry(5, 30, dockProgress -> width(), 23);
}


сможете помочь?
AD
Пример сделан подобно тому, что делал генератор QtDesigner, но данный кусок кода не работает!
:unsure:
Litkevich Yuriy
а что получается, т.е. чем отличается поведение ожидаесое от реального?
AD
Цитата(Litkevich Yuriy @ 25.6.2008, 19:02) *
а что получается, т.е. чем отличается поведение ожидаесое от реального?

да... минимальных размеров, т.е. тех, которые заданы по-умолчанию для полосы прокрутки получаются, а еще эта полоса прокрутки залезает на синюю панель прикрепляемого виджета.
AD
надоело мучиться, поэтому проблему решил следующим образом: отказался от прикрепляемого виджета, вставляю просто полосу прокрутки. А здесь применение компоновщика работает в полной мере!

P.S. тему можно закрыть
Litkevich Yuriy
закрывать не буду - задача не решена. когда-нибудь к ней вернемся
AD
Цитата
закрывать не буду - задача не решена.

Да не... :) Решена. Тестовый пример путем шаманства и черной магии удался, перенесу в свое приложение, покажу код!

Вот так выглядит решение ручной компоновки с помощью прикрепляемого виджета:
// Создание полосы загрузки файлов
void TLV::createProgressBar()
{
    v_layout = new QVBoxLayout;
    dockProgress = new QDockWidget(this);
    dockProgress -> setObjectName(QString::fromUtf8("dockProgress"));
    QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(dockProgress -> sizePolicy().hasHeightForWidth());
    dockProgress -> setSizePolicy(sizePolicy);
    dockProgress -> setMinimumSize(QSize(50, 150));
    dockProgress -> setBaseSize(QSize(300, 150));

    QWidget* dockWidgetContents = new QWidget(dockProgress);
    QVBoxLayout* v_layout2 = new QVBoxLayout(dockWidgetContents);
    v_layout2 -> setContentsMargins(0, 0, 0, 0);

    progressBar = new QProgressBar(dockWidgetContents);
    progressBar -> setObjectName(QString::fromUtf8("progressBar"));
    progressBar -> setMinimumSize(QSize(20, 20));

    v_layout2 -> addWidget(progressBar);
    dockProgress -> setWidget(dockWidgetContents);
    v_layout -> addWidget(dockProgress);

    gridLayout -> addLayout(v_layout, 1, 0, 2, 2);
}




P.S. dockWidget - опечатка!
Litkevich Yuriy
А класс TLV, от кого произошел?
и кто такой dockWidget, он где объявлен?
AD
Цитата(Litkevich Yuriy @ 26.6.2008, 18:08) *
А класс TLV, от кого произошел?
и кто такой dockWidget, он где объявлен?

TLV - потомок QMainWindow;
dockProgress - QDockWidget;
progressBar - QProgressBar.
Litkevich Yuriy
а dockWidget?
AD
Администраторы и модераторы, закройте, пожалуйста, тему - вопрос решен, решение выложено! Недочеты исправлены.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.