11 #include <QWheelEvent> 19 auto AddSteps (
int size,
int steps)
21 constexpr
auto minFontSize = 6;
22 return std::max (minFontSize, size + steps);
25 auto AddSteps (QFont font,
int steps)
27 if (
const auto pts = font.pointSize (); pts > 0)
28 font.setPointSize (AddSteps (pts, steps));
29 else if (
const auto pxs = font.pixelSize (); pxs > 0)
30 font.setPixelSize (AddSteps (pxs, steps));
37 widget.installEventFilter (Util::MakeLambdaEventFilter<QEvent::Wheel> ([params] (QWheelEvent *e)
39 if (!(e->modifiers () & Qt::ControlModifier))
42 constexpr qreal degreesPerDelta = 1 / 8.;
43 constexpr qreal degreesPerStep = 15.;
45 auto degrees = e->angleDelta ().y () * degreesPerDelta;
46 int steps =
static_cast<int> (degrees / degreesPerStep);
49 [=] (
const auto& methods)
51 const auto newFont = AddSteps (methods.GetView_ (), steps);
52 methods.SetView_ (newFont);
53 if (e->modifiers () & Qt::ShiftModifier)
54 methods.SetDefault_ (newFont);
constexpr detail::AggregateType< detail::AggregateFunction::Max, Ptr > max
auto Visit(const Either< Left, Right > &either, Args &&... args)
std::variant< PixelBasedParams, FontBasedParams > FontSizeChangerParams
void InstallFontSizeChanger(QWidget &widget, const FontSizeChangerParams ¶ms)