按钮大小更改时增加按钮字体大小

时间:2011-11-08 14:46:28

标签: qt resize fullscreen

我有一个Qt应用程序,主窗口有五个按钮按垂直顺序排列。 它们都有相同的尺寸。

我想要的是在应用程序全屏时增加按钮标签的字体大小。 我真的很感激一个不需要太多代码的解决方案...希望这可以在Qt Designer中完成,但我找不到如何做的方法。

有什么建议吗?

最佳,

guitarflow

1 个答案:

答案 0 :(得分:6)

我无法想到在设计师中做任何事情,但实际上并没有太多的代码。这是一个快速而肮脏的概念证明。你想要考虑边距(使用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();
}