qtimer mit lcd/timeedit/oder sonstwas verknüpfen?



  • ich weiß nicht genau ob unterer code richtig ist?! ich gehe einfach mal davon aus das ich keinen müll gemacht habe. 😃 auf jeden fall möchte ich das ein element minütlich/stündlich oder sekündlich mitzählt. mir ist eigentlich egal was für eine klasse.
    ich habe bisher nur bekloppte beispiele gesehen in der z.b. ein lcd einfach nur so (while() i++) mäßig läuft?
    könnte mir einer erklären wie man vom maximalwer, geg. von "spinBox_timeadj" zeit-einheitlich runterzählt? als art anzeige für den nutzer wieviele minuten noch bleiben.
    thx im voraus 🙂

    void beispiel::setTime()
    {
        QTimer *timer = new QTimer( this );
        connect( timer, SIGNAL(timeout()), this, SLOT(wasauchimmer()) );
        timer->start( spinBox_timeadj->value()*360000 ); //stundenmäßig
    }
    


  • da mir nochn niemand geholfeen hat, bin ich etwas weiter gegeangen...
    wie bekomm ich es gebacken, dass er wie in einer schleife immer wieder was abzieht?(siehe LCD())
    bei while, stüzt das prog ab?

    void ex::setTime()
    {
        QTimer *timer = new QTimer( this );
        connect( timer, SIGNAL(timeout()), this, SLOT(bsp()) );
        timer->start( spinBox_timeadj->value()*360000 );
    
        QTimer *counter = new QTimer( this );
        connect( counter, SIGNAL(timeout()), this, SLOT(LCD()) );  
          counter->start(60000, true);
    }
    
    void eagle_gui::LCD() 
    {
        int wert = spinBox_timeadj->value()*60;
        wert--;
        lCDNumber->display(wert);
    }
    


  • Hier mal ein komplettes Beispiel:

    main.cpp:

    #include <qapplication.h>
    #include "bsp.h"
    
    int main( int argc, char **argv )
    {
       QApplication a( argc, argv );
       Bsp wid;
       a.setMainWidget( &wid );
       wid.show();
       return a.exec();
    }
    

    bsp.h:

    #include <qlcdnumber.h>
    #include <qtimer.h>
    
    class Bsp : public QLCDNumber
    {
       Q_OBJECT
    
       public:
          Bsp( QWidget * parent = 0, const char * name = 0);
    
          QTimer timer;
    
       public slots:
          void timeout();
    };
    

    bsp.cpp:

    #include "bsp.h"
    #include <qmessagebox.h>
    
    Bsp::Bsp( QWidget * parent, const char * name)
       : QLCDNumber(3, parent, name)
    {
       display(100);
       setDecMode();
       connect( &timer, SIGNAL(timeout()), this, SLOT(timeout()));
       timer.start(100, false);
    }
    
    void Bsp::timeout()
    {
       display( intValue() -1);
       if (intValue() == 0) {
          timer.stop();
          QMessageBox::information( this, "Timer", "Timer finished" );
    
       }
    }
    


  • vielen dank für dein beispiel.
    im risiko das das hier ein bisschen basic klingt und ich vielleicht nen neuen thread aufmachen hätte sollen:
    ich bin noch recht/sehr frisch in sachen klassen. darum zum wichtigsten:
    1.)wenn ich ein objekt in einer klasse(z.b. textedit) definiert habe, wie kann man darauf in einer anderen zugreifen.
    2.)das nennt man doch vererbung:

    class Bsp : public QLCDNumber
    

    in der implementierung:

    Bsp::Bsp( QWidget * parent, const char * name)  : QLCDNumber(3, parent, name)
    

    dann so...
    warum wird der qlcdnumber nicht in den public gesteckt? hat man die klasse vererbt damit es sich "bsp" wie ein erweiterten lcdnumber verhält?

    welchen sinn erfüllt hier eigentlich das

    QWidget * parent, const char * name
    

    ?

    an sich ist allerdings erstere frage am wichtigsten, da ich ein lcd in einer anderen (der haupklasse) stehen habe.
    bitte nicht schimpfen ich beschäftige mich im moment ausgiebig mit klassen! 😞



  • Zu 1) Du brauchst in der anderen Klasse irgendwie einen Zeiger oder eine Referenz auf das Objekt, damit darauf zugegriffen werden kann.

    Zu 2)
    a) Ja, es ist Vererbung
    b) Man erbt von QLCDNumber, um es zu erweitern und da QApplication mindestens ein Widget braucht und QLCDNumber war schon ein Widget.
    c) Wegen parent und name solltest du dir die Widget Hierarchie von Qt anschauen.

    Irgendwie lässt sich nicht einschätzen, wie weit du bist. Deshalb: Zuerst solltest du die C++ Grundlagen beherrschen und dann dich in Qt einarbeiten: die Tutorien durchlesen, die Howtos durcharbeiten und die Beispiele anschauen.



  • wenn ich einen slider im designer implementiert habe, also theoretisch irgendwo ind der glasse die den selben namen wie man projekt hat und ich habe nun dein beispiel teilweise als neue klasse in das projekt übernommen. wie kann man auf werte von objekten aus der jeweis anderen klasse zugreifen, hättest du da ein kleines beispiel muss ja nicht soooooo lang sein. 🙄
    wenn du meinen wissenstand einschätzen willst oder musst: lernender linux nutzer!
    ich würde sagen mit c kenn ich mich ganz gut aus, oop nicht, aber ich bring mir halt alles bei, oder versuchs und da sind foren neben tuts gut zum verständnis geeignet...

    mfg



  • Hast du schon die beiden Tutorials zu Qt durchgearbeitet? Mit dem designer direkt anzufangen ist nicht so gut, da so einiges im Hintergrund geschieht, was man dann nicht genau versteht.



  • wem sagst du das, ich habe eigentlich als erstes mit dem designer begonnen und mich gefreut wie schön man alles gestalten kann, ich werde mir wohl mal die standart tuts anschauen.
    welches tut gibt es denn noch außer das auf der kde (oder qt) seite?



  • mr. shell schrieb:

    wem sagst du das, ich habe eigentlich als erstes mit dem designer begonnen und mich gefreut wie schön man alles gestalten kann, ich werde mir wohl mal die stan**** tuts anschauen.
    welches tut gibt es denn noch außer das auf der kde (oder qt) seite?

    http://doc.trolltech.com/3.3/index.html und da Tutorial #1 und Tutorial #2


Anmelden zum Antworten