Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Blackwanderer от Февраль 10, 2011, 19:30



Название: [Решено]Компоновка. Не получается задать рекомендуемый размер виджета.
Отправлено: Blackwanderer от Февраль 10, 2011, 19:30
Добрый вечер!
Столкнулся со следующей проблемой: есть QGridLayout, в нем два виджета.
(http://www.ljplus.ru/img4/p/v/pvantonov/111.png)
Виджет, выделенный синей рамочкой, - наследник QGLWidget, обрамленный в QFrame (позиция (0,1) в лайоуте). Для QFrame установлена политика размера (QSizePolicy::Expanding, QSizePolicy::Expanding). Виджет, выделенный красной рамочкой (позиция (1,1) в лайоуте) - самописный, отрисовывается с помощью QPainter. Проблема именно с ним. Сейчас для него искусственно задано
Код:
m_X->setMinimumHeight(35);
Если убрать эту искусственную фиксацию размера, виджет не виден при любых задаваемых политиках размера.
(http://www.ljplus.ru/img4/p/v/pvantonov/222.png)
В классе виджета есть следующие функции:
Код:
QSize QAxis::sizeHint()
{
    return QSize(50,35);
}

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

Поэтому, если я правильно все понимаю, при установке политики (QSizePolicy::Minimum, QSizePolicy::Minimum) размер виджета не может быть меньше, чем 35 пикселей по горизонтали. Однако этого  не происходит. Высота виджета, похоже, выставляется в 0. Подскажите, пожалуйста, в каком направлении копать.


Название: Re: Компоновка. Не получается задать рекомендуемый размер виджета.
Отправлено: Fat-Zer от Февраль 10, 2011, 19:43
а чем не устраивает "m_X->setMinimumHeight(35);"? это можно в конструктор вашего виджета прописать...


Название: Re: Компоновка. Не получается задать рекомендуемый размер виджета.
Отправлено: Blackwanderer от Февраль 10, 2011, 19:48
а чем не устраивает "m_X->setMinimumHeight(35);"? это можно в конструктор вашего виджета прописать...
Сейчас оно так и работает, но идеологически я считаю это не правильным.


Название: Re: [Решено]Компоновка. Не получается задать рекомендуемый размер виджета.
Отправлено: Blackwanderer от Февраль 10, 2011, 19:55
Нашел корень проблемы. Функции должны быть объявлены как константные:

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

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


Название: Re: [Решено]Компоновка. Не получается задать рекомендуемый размер виджета.
Отправлено: kirill от Февраль 11, 2011, 09:32
Вот же ж рисуночек пля