#include #include #include #include #include #include #include class Proxy : public QObject { Q_OBJECT private: int val; public: Proxy() { val=0; } void changeValue (int na) { if (na != val) { val=na; emit valueChange(val); } } public slots: void newValue (int nep) { if (val!=10*nep) { val=10*nep; emit valueChange (val); } } signals: void valueChange (int newVal); }; class MyWidget : public QWidget { public: MyWidget (QWidget* parent=0); }; MyWidget::MyWidget (QWidget *parent) : QWidget (parent) { QPushButton *quit = new QPushButton(tr("Quit")); quit->setFont(QFont("Times", 18, QFont::Bold)); QLCDNumber *lcd = new QLCDNumber(3); lcd->setSegmentStyle(QLCDNumber::Filled); QSlider *slider = new QSlider (Qt::Horizontal); slider->setRange(0,99); slider->setValue(0); Proxy *pro = new Proxy(); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); connect(slider, SIGNAL(valueChanged(int)), pro, SLOT(newValue(int))); connect(pro, SIGNAL(valueChange(int)), lcd, SLOT(display(int))); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(quit); layout->addWidget(lcd); layout->addWidget(slider); setLayout(layout); } int main(int argc, char **argv) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); }