Доброго времени суток. Я новичок в Qt и столкнулся с такой проблемой: требуется приложение с автомасштабированием кнопок на форме (приложение представляет собой по сути форму, на которой n-кнопок, полностью заполняющих пространство формы). Кнопки надо масштабировать не только по ширине, но и по высоте. С размером самих кнопок проблем нет, но вот иконки и надписи на кнопках остаются первоначального размера. Гугление говорит, что надо использовать событие resizeEvent. Я в обработчик события написал что-то вроде:
| Код | ... class TMegaStarter : public QWidget { Q_OBJECT public: explicit TMegaStarter(QWidget * parent = 0); QGridLayout * mLayout; void resizeEvent (QResizeEvent * event); QPushButton * button; signals:
public slots:
}; ... void TMegaStarter::resizeEvent (QResizeEvent * event) { QSize icSize; int icHeight; icHeight = button->height() - 20; // 20 - волшебное число, определяющее насколько иконка меньше высоты кнопки icSize.setHeight(icHeight); icSize.setWidth(icHeight); QFont font; font = button->font(); font.setPixelSize(icHeight); button->setIconSize(icSize); button->setFont(font); }
|
Однако результат работы обработчика крайне нестабилен. То шрифт слишком мелкий, то увеличение размера шрифта приводит к автоматическому увеличению размеров кнопки, что приводит к новому увеличению размера шрифта и так до бесконечности, пока программа не упадёт. Как грамотно сделать автомасштабирование? |