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"