File indexing completed on 2024-04-21 14:56:12
0001 /* 0002 * Tests the KNumInput Widget class 0003 * 0004 * Copyright 1999 by Dirk A. Mueller <dmuell@gmx.net> 0005 * 0006 * Licensed under the GNU General Public License version 2 or later 0007 */ 0008 0009 #include <QApplication> 0010 #include <QLayout> 0011 #include <QGroupBox> 0012 #include <QBoxLayout> 0013 0014 #include <klocalizedstring.h> 0015 #include <knuminput.h> 0016 0017 #include "knuminputtest.h" 0018 0019 #include <kdebug.h> 0020 0021 void TopLevel::slotPrint(int n) 0022 { 0023 kDebug() << "slotPrint( " << n << " )"; 0024 } 0025 void TopLevel::slotPrint(double n) 0026 { 0027 kDebug() << "slotPrint( " << n << " )"; 0028 } 0029 0030 #define conn(x,y) connect( x, SIGNAL(valueChanged(y)), SLOT(slotPrint(y))) 0031 TopLevel::TopLevel(QWidget *parent) 0032 : QWidget(parent) 0033 { 0034 setWindowTitle("KNumInput test application"); 0035 0036 QBoxLayout *l = new QHBoxLayout(this); 0037 l->setMargin(10); 0038 0039 QGroupBox *b1 = new QGroupBox("KIntNumInput", this); 0040 b1->setLayout(new QVBoxLayout()); 0041 0042 i1 = new KIntNumInput(42, b1, 10 /*"perc_no_slider"*/); 0043 i1->setLabel("percent of usage (no slider)"); 0044 i1->setRange(0, 100, 5); 0045 i1->setSliderEnabled(false); 0046 conn(i1, int); 0047 b1->layout()->addWidget(i1); 0048 0049 i2 = new KIntNumInput(42, b1); 0050 i2->setLabel("percentage of usage (with slider)"); 0051 i2->setRange(0, 100, 5); 0052 i2->setSuffix(" %"); 0053 i2->setSliderEnabled(true); 0054 conn(i2, int); 0055 b1->layout()->addWidget(i2); 0056 0057 i3 = new KIntNumInput(0xAF, b1, 16); 0058 i3->setLabel("Hex byte (no slider)"); 0059 i3->setRange(0, 255, 1); 0060 i3->setSliderEnabled(false); 0061 i3->setSuffix(" (hex)"); 0062 conn(i3, int); 0063 b1->layout()->addWidget(i3); 0064 0065 i4 = new KIntNumInput(0xfe, b1, 16); 0066 i4->setLabel("Hex byte (with slider)"); 0067 i4->setRange(0, 255, 1); 0068 i4->setSliderEnabled(true); 0069 conn(i4, int); 0070 b1->layout()->addWidget(i4); 0071 0072 i5 = new KIntNumInput(10, b1, 10); 0073 i5->setLabel("Width (keeps aspect ratio):"); 0074 i5->setRange(0, 200); 0075 i5->setSliderEnabled(false); 0076 i5->setReferencePoint(5); 0077 b1->layout()->addWidget(i5); 0078 0079 i6 = new KIntNumInput(20, b1, 10); 0080 i6->setLabel("Height (should be 2xWidth value):"); 0081 i6->setRange(0, 200); 0082 i6->setReferencePoint(10); 0083 i6->setSliderEnabled(false); 0084 b1->layout()->addWidget(i6); 0085 0086 connect(i5, SIGNAL(relativeValueChanged(double)), 0087 i6, SLOT(setRelativeValue(double))); 0088 connect(i6, SIGNAL(relativeValueChanged(double)), 0089 i5, SLOT(setRelativeValue(double))); 0090 0091 i7 = new KIntNumInput(0, b1, 10); 0092 i7->setLabel("math test:", Qt::AlignVCenter | Qt::AlignLeft); 0093 i7->setRange(0, 200, 1); 0094 conn(i7, int); 0095 b1->layout()->addWidget(i7); 0096 0097 i8 = new KIntNumInput(0, b1, 10); 0098 i8->setLabel("plural test:", Qt::AlignVCenter | Qt::AlignLeft); 0099 i8->setRange(0, 100, 1); 0100 i8->setSuffix(ki18np(" suffix", " suffixes")); 0101 b1->layout()->addWidget(i8); 0102 0103 l->addWidget(b1); 0104 0105 QGroupBox *b2 = new QGroupBox("KDoubleNumInput", this); 0106 b2->setLayout(new QVBoxLayout()); 0107 d1 = new KDoubleNumInput(10, 4.0, 1, b2, 2 /*, "perc_double_no_slider"*/); 0108 d1->setLabel("percent of usage (no slider)", Qt::AlignTop | Qt::AlignRight); 0109 d1->setRange(0.0, 4000.0, 0.01, false); 0110 //d1->setValue(1.00000000000000000001); 0111 conn(d1, double); 0112 b2->layout()->addWidget(d1); 0113 0114 d2 = new KDoubleNumInput(0, 20, 0.422, b2, 0.1, 3/*, "perc_double_with_slider"*/); 0115 d2->setLabel("percentage of usage (with slider)", Qt::AlignBottom | Qt::AlignLeft); 0116 d2->setRange(0, 0.05, 0.005); 0117 d2->setSuffix("%"); 0118 conn(d2, double); 0119 b2->layout()->addWidget(d2); 0120 0121 d3 = new KDoubleNumInput(0, 20, 16.20, b2); 0122 d3->setLabel("cash: ", Qt::AlignVCenter | Qt::AlignHCenter); 0123 d3->setRange(0.10, 100, 0.1); 0124 d3->setPrefix("p"); 0125 d3->setSuffix("$"); 0126 conn(d3, double); 0127 b2->layout()->addWidget(d3); 0128 0129 d4 = new KDoubleNumInput(0, INT_MAX, INT_MAX / 10000.0, b2, 1, 1); 0130 // d4->setPrecision(3); 0131 d4->setRange(double(INT_MIN + 1) / 1000.0, double(INT_MAX) / 1000.0, 1); 0132 d4->setLabel("math test: ", Qt::AlignVCenter | Qt::AlignLeft); 0133 // d4->setFormat("%g"); 0134 conn(d4, double); 0135 b2->layout()->addWidget(d4); 0136 0137 d5 = new KDoubleNumInput(double(INT_MIN + 1) / 1e9, double(INT_MAX - 1) / 1e9, 0138 0.1, b2, 0.001, 9 /*, "d5"*/); 0139 d5->setLabel("math test 2: ", Qt::AlignVCenter | Qt::AlignLeft); 0140 conn(d5, double); 0141 b2->layout()->addWidget(d5); 0142 0143 d6 = new KDoubleNumInput(-10, 10, 0, b2, 0.001, 3 /*, "d6"*/); 0144 d6->setLabel("aspect ratio test with a negative ratio:"); 0145 d6->setReferencePoint(1); 0146 b2->layout()->addWidget(d6); 0147 0148 d7 = new KDoubleNumInput(-30, 30, 0, b2, 0.001, 3 /*, "d7"*/); 0149 d7->setReferencePoint(-3); 0150 b2->layout()->addWidget(d7); 0151 0152 connect(d6, SIGNAL(relativeValueChanged(double)), 0153 d7, SLOT(setRelativeValue(double))); 0154 connect(d7, SIGNAL(relativeValueChanged(double)), 0155 d6, SLOT(setRelativeValue(double))); 0156 0157 l->addWidget(b2); 0158 } 0159 0160 int main(int argc, char **argv) 0161 { 0162 QApplication::setApplicationName("KNuminputTesT"); 0163 0164 QApplication a(argc, argv); 0165 0166 TopLevel *toplevel = new TopLevel(nullptr); 0167 toplevel->show(); 0168 a.exec(); 0169 } 0170 0171 #include "moc_knuminputtest.cpp"