Advertentie

Auteur Topic: Qt GUI programmering a.d.h. QSlider  (gelezen 203 keer)

Offline Divendo

  • Administrator
  • Zeer gerespecteerd lid
  • ********
  • Berichten: 2540
  • Voer in op google maps: 37.971458,23.726706
    • Divendo Webs
Re: Qt GUI programmering a.d.h. QSlider
« Reactie #15 Gepost op: januari 05, 2012, 12:56:32 pm »
Hierzo de oplossing. Ik kwam er alleen wel achter dat als je een class met signals en slots maakt deze in een header moet staan (anders pikt de compiler het niet). De reden dat we van QObject erven is omdat je anders geen signals en slots in die class kan maken (daarom staat er ook Q_OBJECT in de class, dat is ook nodig daarvoor).

main.cpp
Code: C++ (QT)
  1. #include <QApplication>
  2. #include <QHBoxLayout>
  3. #include <QSlider>
  4. #include <QSpinBox>
  5. #include <QLabel>
  6. #include <QPushButton>
  7. #include "initiateprocess.h"
  8.  
  9. int main( int argc, char *argv[] )
  10. {
  11.     // create a new application
  12.     QApplication app(argc, argv);
  13.  
  14.     // create a new widget (main window)
  15.     QWidget *window = new QWidget;
  16.     window->setWindowTitle("My tool");
  17.  
  18.     // create more widgets (slider and spinbox)
  19.     QLabel *label1 = new QLabel("Amount:");
  20.     QSlider *slider = new QSlider(Qt::Horizontal);
  21.     QSpinBox *spinbox = new QSpinBox;
  22.     QPushButton *startButton = new QPushButton;
  23.  
  24.     // set default values for the widgets
  25.     slider->setRange(1, 199);
  26.     spinbox->setRange(1, 199);
  27.     startButton->setText("Start");
  28.  
  29.     // link the slider to the spinbox and vise versa
  30.     QObject::connect(slider, SIGNAL(valueChanged(int)), spinbox, SLOT(setValue(int)));
  31.     QObject::connect(spinbox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
  32.  
  33.     // Create an instance of initiateProcess
  34.     initiateProcess processStarter(label1);
  35.  
  36.     // link the clicked-signal from the button to the startProcess-slot from the instance of initiateProcess
  37.     QObject::connect(startButton, SIGNAL(clicked()), &processStarter, SLOT(startProcess()));
  38.  
  39.     // set default start value which will set both
  40.     // widgets on this value since they are synced
  41.     spinbox->setValue(20);
  42.  
  43.     // create a new layout holder
  44.     QHBoxLayout *layout = new QHBoxLayout;
  45.     layout->addWidget(label1);
  46.     layout->addWidget(slider);
  47.     layout->addWidget(spinbox);
  48.     layout->addWidget(startButton);
  49.  
  50.     // display the layout holder on the main widget
  51.     window->setLayout(layout);
  52.  
  53.     // show the window
  54.     window->show();
  55.  
  56.     // return the state
  57.     return app.exec();
  58. }

initiateprocess.h
Code: C++ (QT)
  1. #ifndef INITIATEPROCESS_H
  2. #define INITIATEPROCESS_H
  3.  
  4. #include <QObject>
  5. #include <QLabel>
  6.  
  7. class initiateProcess : public QObject
  8. {
  9.     Q_OBJECT
  10.  
  11.     public:
  12.         QLabel* label;
  13.         initiateProcess(QLabel* label)
  14.             : label(label) {}
  15.  
  16.     public slots:
  17.         void startProcess()
  18.         {
  19.             label->setText("Hello world!");
  20.         }
  21. };
  22.  
  23. #endif // INITIATEPROCESS_H
Admin - http://divendo-webs.com
[C++][C#][PHP][JavaScript][HTML][XML][CSS][SQL][Bash][GML][Nederlands][Engels][Latijn]

"Leren is proberen."

Offline GroundZero

  • Zeer actief lid
  • *****
  • Berichten: 300
    • Devbizz - webdevelopment
Re: Qt GUI programmering a.d.h. QSlider
« Reactie #16 Gepost op: januari 05, 2012, 15:47:16 pm »
haha net even anders als normaal dit allemaal word even wennen maar super bedankt Divendo, gaan we dit even goed uit
ons hoofd leren!

Heb het net geprobeerd Divendo en het werkt helemaal prima, echt super bedankt ik kan nu weer een heel stuk verder nu ik dit weer begrijp!
« Laatst bewerkt op: januari 05, 2012, 16:09:13 pm door GroundZero »

Advertentie