Russian Qt Forum
Ноябрь 27, 2024, 05:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]Компоновка. Не получается задать рекомендуемый размер виджета.  (Прочитано 2744 раз)
Blackwanderer
Гость
« : Февраль 10, 2011, 19:30 »

Добрый вечер!
Столкнулся со следующей проблемой: есть QGridLayout, в нем два виджета.

Виджет, выделенный синей рамочкой, - наследник QGLWidget, обрамленный в QFrame (позиция (0,1) в лайоуте). Для QFrame установлена политика размера (QSizePolicy::Expanding, QSizePolicy::Expanding). Виджет, выделенный красной рамочкой (позиция (1,1) в лайоуте) - самописный, отрисовывается с помощью QPainter. Проблема именно с ним. Сейчас для него искусственно задано
Код:
m_X->setMinimumHeight(35);
Если убрать эту искусственную фиксацию размера, виджет не виден при любых задаваемых политиках размера.

В классе виджета есть следующие функции:
Код:
QSize QAxis::sizeHint()
{
    return QSize(50,35);
}

QSize QAxis::minimumSizeHint()
{
    return QSize(50,35);
}

Поэтому, если я правильно все понимаю, при установке политики (QSizePolicy::Minimum, QSizePolicy::Minimum) размер виджета не может быть меньше, чем 35 пикселей по горизонтали. Однако этого  не происходит. Высота виджета, похоже, выставляется в 0. Подскажите, пожалуйста, в каком направлении копать.
« Последнее редактирование: Февраль 10, 2011, 19:54 от Черный Странник » Записан
Fat-Zer
Гость
« Ответ #1 : Февраль 10, 2011, 19:43 »

а чем не устраивает "m_X->setMinimumHeight(35);"? это можно в конструктор вашего виджета прописать...
Записан
Blackwanderer
Гость
« Ответ #2 : Февраль 10, 2011, 19:48 »

а чем не устраивает "m_X->setMinimumHeight(35);"? это можно в конструктор вашего виджета прописать...
Сейчас оно так и работает, но идеологически я считаю это не правильным.
Записан
Blackwanderer
Гость
« Ответ #3 : Февраль 10, 2011, 19:55 »

Нашел корень проблемы. Функции должны быть объявлены как константные:

QSize QAxis::sizeHint() const
{
    return QSize(50,35);
}

QSize QAxis::minimumSizeHint() const
{
    return QSize(50,35);
}
Записан
kirill
Гость
« Ответ #4 : Февраль 11, 2011, 09:32 »

Вот же ж рисуночек пля
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 21.