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

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

有什么建议?

最好,

吉他流

最佳答案

我想不出在Designer中做任何事情的方法,但实际上并不需要太多代码。这是一个概念的快速证明。您想考虑边距(使用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();
}

10-02 04:54