Albert
Loading...
Searching...
No Matches
widgetsutil.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Manuel Schneider
2// SPDX-License-Identifier: MIT
3
4#pragma once
5#include <QCheckBox>
6#include <QDoubleSpinBox>
7#include <QLineEdit>
8#include <QSpinBox>
9#include <QString>
10#include <albert/export.h>
11
12namespace albert
13{
14
18
24template<typename T, typename GET, typename SET>
25void bindWidget(QCheckBox *checkbox, T *object, GET get, SET set)
26{
27 checkbox->setChecked((object->*get)());
28 QObject::connect(checkbox, &QCheckBox::toggled, object, set);
29}
30
38template<typename T, typename GET, typename SET, typename SIG>
39void bindWidget(QCheckBox *checkbox, T *object, GET get, SET set, SIG sig)
40{
41 bindWidget(checkbox, object, get, set);
42 QObject::connect(object, sig, checkbox, &QCheckBox::setChecked);
43}
44
51template<typename T, typename GET, typename SET>
52void bindWidget(QLineEdit *lineedit, T *object, GET get, SET set)
53{
54 lineedit->setText((object->*get)());
55 QObject::connect(lineedit, &QLineEdit::editingFinished,
56 object, [lineedit, object, set] { (object->*set)(lineedit->text()); });
57}
58
66template<typename T, typename GET, typename SET, typename SIG>
67void bindWidget(QLineEdit *lineedit, T *object, GET get, SET set, SIG sig)
68{
69 bindWidget(lineedit, object, get, set);
70 QObject::connect(object, sig, lineedit, &QLineEdit::setText);
71}
72
79template<typename T, typename GET, typename SET>
80void bindWidget(QSpinBox *spinbox, T *object, GET get, SET set)
81{
82 spinbox->setValue((object->*get)());
83 QObject::connect(spinbox, QOverload<int>::of(&QSpinBox::valueChanged), object, set);
84}
85
93template<typename T, typename GET, typename SET, typename SIG>
94void bindWidget(QSpinBox *spinbox, T *object, GET get, SET set, SIG sig)
95{
96 bindWidget(spinbox, object, get, set);
97 QObject::connect(object, sig, spinbox, &QSpinBox::setValue);
98}
99
106template<typename T, typename GET, typename SET>
107void bindWidget(QDoubleSpinBox *spinbox, T *object, GET get, SET set)
108{
109 spinbox->setValue((object->*get)());
110 QObject::connect(spinbox, QOverload<double>::of(&QDoubleSpinBox::valueChanged), object, set);
111}
112
120template<typename T, typename GET, typename SET, typename SIG>
121void bindWidget(QDoubleSpinBox *spinbox, T *object, GET get, SET set, SIG sig)
122{
123 bindWidget(spinbox, object, get, set);
124 QObject::connect(object, sig, spinbox, &QDoubleSpinBox::setValue);
125}
126
128
129}
void bindWidget(QCheckBox *checkbox, T *object, GET get, SET set)
Binds a property of type bool of object to checkbox.
Definition widgetsutil.h:25
Definition app.h:56