crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Тема закрытаНачать новую тему
> Ручное применение компоновщиков, ?
AD
  опции профиля:
сообщение 25.6.2008, 15:59
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Не очень понимаю, в чем ошибка кода? Размер полосы прокрутки и ее местоположение, совсем не те, что я задаю вот в этом коде:
/// Создание полосы загрузки файлов
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
  опции профиля:
сообщение 25.6.2008, 17:56
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Пример сделан подобно тому, что делал генератор QtDesigner, но данный кусок кода не работает!
:unsure:

Сообщение отредактировал AD - 25.6.2008, 17:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 25.6.2008, 18:02
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а что получается, т.е. чем отличается поведение ожидаесое от реального?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 25.6.2008, 18:10
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Litkevich Yuriy @ 25.6.2008, 19:02) *
а что получается, т.е. чем отличается поведение ожидаесое от реального?

да... минимальных размеров, т.е. тех, которые заданы по-умолчанию для полосы прокрутки получаются, а еще эта полоса прокрутки залезает на синюю панель прикрепляемого виджета.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.6.2008, 11:21
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


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

P.S. тему можно закрыть

Сообщение отредактировал AD - 26.6.2008, 11:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.6.2008, 16:29
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


закрывать не буду - задача не решена. когда-нибудь к ней вернемся
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.6.2008, 16:56
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата
закрывать не буду - задача не решена.

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

Вот так выглядит решение ручной компоновки с помощью прикрепляемого виджета:
// Создание полосы загрузки файлов
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 - опечатка!

Сообщение отредактировал AD - 26.6.2008, 17:44
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.6.2008, 17:08
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


А класс TLV, от кого произошел?
и кто такой dockWidget, он где объявлен?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.6.2008, 17:31
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


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

TLV - потомок QMainWindow;
dockProgress - QDockWidget;
progressBar - QProgressBar.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.6.2008, 17:33
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а dockWidget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Тема закрытаНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 5:36