2014-12-14 3 views
0

я переопределен (перегружен) в sizeHint() функцию в настраиваемой QPushButton класса, как это:QWidget sizeHint()

QSize CustQPushButton::sizeHint()const   
{ 
    QWidget *parentWindow=this->parentWidget(); //a pointer to the parent window 
    return QSize(parentWindow->width()/10,60); 
} 

проблема:

Когда окно первоначально отображается ширина моих кнопок как и ожидалось (1/10 окна), но при изменении размера окна кнопки не изменяются пропорционально окну (родительскому). Политика размеров CustQPushButton установлена ​​в Fixed/Fixed, а мои кнопки-экземпляры находятся внутри QGridLayout.

Может кто-нибудь, пожалуйста, помогите мне?

+0

Я не думаю, что вы исправлены. Я думаю о расширении или предпочтении. – drescherjm

+0

На самом деле я хочу fixed.i хочу, чтобы ширина-подсказка моих кнопок была пропорционально пропорциональна ширине родительского окна. – coucou8949

+0

Сделать родительский resizeEvent, чтобы вызвать adjustSize для всех кнопок CustQPushButton. – AlexanderVX

ответ

0

Вам не нужны специальные классы для такой тривиальной вещи. Цель подсказки размера совершенно другая. Макеты по умолчанию могут обрабатывать ширину 1/10. Вы должны использовать функцию QGridLayout::setColumnStretch. Например, установка коэффициентов растяжения из двух столбцов в 1 и 9 изменит размер 1-го столбца на 1/10 родительского (при условии, что содержимое второго столбца может расти достаточно).

+0

растяжение позволяет постоянное масштабирование между столбцами или raws, в то время как я понимаю, что вы имеете в виду, но я не думаю, что это уместно, в ссылке ниже, в середине страницы вы найдете раздел с именем: «Добавление виджетов в Макет "ведьма говорит, что макеты компоновать виджетов рядом с их политикой размера и размером подсказки сначала после того, что он учитывает фактор растяжения. http://qt-project.org/doc/qt-4.8/layout.html – coucou8949

Смежные вопросы