Albert
Loading...
Searching...
No Matches
widgetsutil.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Manuel Schneider
2
3#pragma once
4#include <QCheckBox>
5#include <QDoubleSpinBox>
6#include <QLineEdit>
7#include <QSpinBox>
8#include <QString>
9#include <albert/export.h>
10
11namespace albert::util
12{
13
19template<typename T, typename GET, typename SET>
20static void bind(QCheckBox *checkbox, T *object, GET get, SET set)
21{
22 checkbox->setChecked((object->*get)());
23 QObject::connect(checkbox, &QCheckBox::toggled, object, set);
24}
25
33template<typename T, typename GET, typename SET, typename SIG>
34static void bind(QCheckBox *checkbox, T *object, GET get, SET set, SIG sig)
35{
36 bind(checkbox, object, get, set);
37 QObject::connect(object, sig, checkbox, &QCheckBox::setChecked);
38}
39
46template<typename T, typename GET, typename SET>
47static void bind(QLineEdit *lineedit, T *object, GET get, SET set)
48{
49 lineedit->setText((object->*get)());
50 QObject::connect(lineedit, &QLineEdit::editingFinished,
51 object, [lineedit, object, set] { (object->*set)(lineedit->text()); });
52}
53
61template<typename T, typename GET, typename SET, typename SIG>
62static void bind(QLineEdit *lineedit, T *object, GET get, SET set, SIG sig)
63{
64 bind(lineedit, object, get, set);
65 QObject::connect(object, sig, lineedit, &QLineEdit::setText);
66}
67
74template<typename T, typename GET, typename SET>
75static void bind(QSpinBox *spinbox, T *object, GET get, SET set)
76{
77 spinbox->setValue((object->*get)());
78 QObject::connect(spinbox, QOverload<int>::of(&QSpinBox::valueChanged), object, set);
79}
80
88template<typename T, typename GET, typename SET, typename SIG>
89static void bind(QSpinBox *spinbox, T *object, GET get, SET set, SIG sig)
90{
91 bind(spinbox, object, get, set);
92 QObject::connect(object, sig, spinbox, &QSpinBox::setValue);
93}
94
101template<typename T, typename GET, typename SET>
102static void bind(QDoubleSpinBox *spinbox, T *object, GET get, SET set)
103{
104 spinbox->setValue((object->*get)());
105 QObject::connect(spinbox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), object, set);
106}
107
115template<typename T, typename GET, typename SET, typename SIG>
116static void bind(QDoubleSpinBox *spinbox, T *object, GET get, SET set, SIG sig)
117{
118 bind(spinbox, object, get, set);
119 QObject::connect(object, sig, spinbox, &QDoubleSpinBox::setValue);
120}
121
122}
Definition backgroundexecutor.h:12