File indexing completed on 2024-05-05 03:48:36

0001 #include "NumberSpinBox.h"
0002 
0003 #include <QApplication>
0004 #include <QHBoxLayout>
0005 #include <QLabel>
0006 #include <QLineEdit>
0007 #include <QMainWindow>
0008 #include <QSpinBox>
0009 #include <QVBoxLayout>
0010 #include <QWidget>
0011 
0012 class MainWindow : public QMainWindow {
0013     Q_OBJECT
0014 
0015 public:
0016     MainWindow(QWidget* parent = nullptr)
0017         : QMainWindow(parent) {
0018         QWidget* w = new QWidget(this);
0019         QVBoxLayout* l = new QVBoxLayout();
0020         NumberSpinBox* nb = new NumberSpinBox(5, w);
0021 
0022         {
0023             QHBoxLayout* h = new QHBoxLayout();
0024             auto* lb = new QLabel(QStringLiteral("Prefix:"), this);
0025             auto* le = new QLineEdit(this);
0026             h->addWidget(lb);
0027             h->addWidget(le);
0028             l->addLayout(h);
0029 
0030             connect(le, &QLineEdit::textChanged, nb, &NumberSpinBox::setPrefix);
0031         }
0032 
0033         {
0034             QHBoxLayout* h = new QHBoxLayout();
0035             auto* lb = new QLabel(QStringLiteral("Suffix:"), this);
0036             auto* le = new QLineEdit(this);
0037             h->addWidget(lb);
0038             h->addWidget(le);
0039             l->addLayout(h);
0040 
0041             connect(le, &QLineEdit::textChanged, nb, &NumberSpinBox::setSuffix);
0042         }
0043 
0044         {
0045             QHBoxLayout* h = new QHBoxLayout();
0046             auto* lb = new QLabel(QStringLiteral("Min:"), this);
0047             auto* sb = new QSpinBox(this);
0048             sb->setMinimum(-1e6);
0049             sb->setMaximum(1e6);
0050             sb->setValue(-10);
0051             nb->setMinimum(-10);
0052             h->addWidget(lb);
0053             h->addWidget(sb);
0054             l->addLayout(h);
0055 
0056             connect(sb, QOverload<int>::of(&QSpinBox::valueChanged), [nb](int min) {
0057                 nb->setMinimum(min);
0058             });
0059         }
0060 
0061         {
0062             QHBoxLayout* h = new QHBoxLayout();
0063             auto* lb = new QLabel(QStringLiteral("Max:"), this);
0064             auto* sb = new QSpinBox(this);
0065             sb->setMinimum(-1e6);
0066             sb->setMaximum(1e6);
0067             sb->setValue(10);
0068             nb->setMaximum(10);
0069             h->addWidget(lb);
0070             h->addWidget(sb);
0071             l->addLayout(h);
0072 
0073             connect(sb, QOverload<int>::of(&QSpinBox::valueChanged), [nb](int max) {
0074                 nb->setMaximum(max);
0075             });
0076         }
0077 
0078         QLineEdit* le = new QLineEdit(w);
0079 
0080         connect(nb, QOverload<double>::of(&NumberSpinBox::valueChanged), [le](double value) {
0081             le->setText(QString::number(value));
0082         });
0083 
0084         l->addWidget(nb);
0085         l->addWidget(le);
0086         w->setLayout(l);
0087         setCentralWidget(w);
0088     }
0089 
0090 private:
0091 };
0092 
0093 int main(int argc, char* argv[]) {
0094     QApplication a(argc, argv);
0095     MainWindow w;
0096     w.show();
0097     return a.exec();
0098 }
0099 
0100 #include "NumberSpinBoxMain.moc"