Увеличение размера шрифта кнопки при изменении размера кнопки - PullRequest
3 голосов
/ 08 ноября 2011

У меня есть приложение Qt с главным окном, в котором пять кнопок расположены в вертикальном порядке. Все они имеют одинаковый размер.

Все, что я хочу сделать, это увеличить размер шрифта надписи кнопки, когда приложение переходит в полноэкранный режим. Я был бы очень признателен за решение, в котором не нужно слишком много кода ... я надеялся, что это можно сделать в Qt Designer, но я не смог найти способ как это сделать.

Есть предложения?

Best

guitarflow

1 Ответ

6 голосов
/ 08 ноября 2011

Я не могу придумать какой-либо способ сделать это в конструкторе, но на самом деле это не слишком много кода. Вот быстрое и грязное доказательство концепции. Вы бы хотели учесть поля (используя QStyle::pixelMetrics и т. П.), Но вы поняли идею.

#include <QtGui>

class FontAdjustingButton : public QPushButton {
public:
  explicit FontAdjustingButton(QWidget *parent = NULL) : QPushButton(parent) {
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
  }
protected:
  void resizeEvent(QResizeEvent *event) {
    int button_margin = style()->pixelMetric(QStyle::PM_ButtonMargin);
    QFont f = font();
    f.setPixelSize(event->size().height() - button_margin * 2);
    setFont(f);
  }
};

int main(int argc, char **argv) {
  QApplication app(argc, argv);
  QWidget w;
  QVBoxLayout *layout = new QVBoxLayout;
  for (int i = 0; i < 5; ++i) {
    FontAdjustingButton *btn = new FontAdjustingButton;
    btn->setText(QString("Hello, world %1").arg(i));
    layout->addWidget(btn);
  }
  w.setLayout(layout);
  w.show();
  return app.exec();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...