Anfängerfrage: LCDNum, PushButton und LCDNum verbinden

Alles rund um die Programmierung mit Qt
Antworten
elektrohirn
Beiträge: 3
Registriert: 13. April 2005 19:55

Anfängerfrage: LCDNum, PushButton und LCDNum verbinden

Beitrag von elektrohirn »

Also bei mir hackts gleich zu Beginn:

Hab mein eigenes Widget, in dem hab ich ein QSlider *slider, ein QPushButton *button und ein QLCDNumber *lcd. Ich will die drei so connecten, das beim Klick auf den Button der Wert des Sliders als LCD-Nummer angezeigt wird. Ich habe es so versucht, geht aber nicht:

Code: Alles auswählen

connect( button, SIGNAL(clicked()), lcd, SLOT(display(slider->value())) );
Die Funktion value() von QSlider gibt mir doch dessen Wert als int zurück. Ich kann ohne Probleme den QLCDNum direkt mit dem QSlider verbinden, und zwar so:

Code: Alles auswählen

 connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
Was mache ich falsch?


Tom
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Re: Anfängerfrage: LCDNum, PushButton und LCDNum verbinden

Beitrag von Goos »

elektrohirn hat geschrieben:Ich habe es so versucht, geht aber nicht:
"geht aber nicht" ist keine ausreichende Fehlermeldung.
Zu wenig Code zur Analyse hast auch angegeben, aber display(slider->value()) kann schonmal nicht wirklich sein ;)

Goos
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

connect( button, SIGNAL( clicked() ), this, SLOT( slotZeigeNummerAufLCD() ) );

slotZeigeNummerAufLCD() { lcd -> setValue( slider -> value() ); }
elektrohirn
Beiträge: 3
Registriert: 13. April 2005 19:55

Beitrag von elektrohirn »

Hi danke für eure Antworten und sorry für meine späte Antwort, hab irgendwie gar keine Mail gekriegt...

Okay also wenn ich dich richtig verstehe muss ich mir praktisch meinen eigenen Slot programmieren? Wusste nicht das das geht, war mein 1. Tag mit Qt ;-) Aber sollte dann klar sein, Danke jedenfalls!

Tom
elektrohirn
Beiträge: 3
Registriert: 13. April 2005 19:55

Beitrag von elektrohirn »

Sorry für die Newbie-Fragen - wo genau kann ich jetzt den Slot definieren? ich denke mal innerhalb der Klasse für mein Widget oder? Hier mal der komplette Code (im Prinzip einfach das Beisiel aus dem QT-Tutorial, nur etwas erweitert)

Code: Alles auswählen

#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>

#include <qvbox.h>

class MyWidget : public QVBox
{
public:
    MyWidget( QWidget *parent=0, const char *name=0 );
};


MyWidget::MyWidget( QWidget *parent, const char *name )
        : QVBox( parent, name )
{
    QPushButton *quit = new QPushButton( "Quit", this, "quit" );
    quit->setFont( QFont( "Times", 18, QFont::Bold ) );

    connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );

    QLCDNumber *lcd  = new QLCDNumber( 2, this, "lcd" );
    lcd->setSegmentStyle( QLCDNumber::Flat );

    QSlider * slider = new QSlider( Horizontal, this, "slider" );
    slider->setRange( 0, 99 );
    slider->setValue( 0 );

    connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );

    QPushButton *anzeigen = new QPushButton( "Anzeigen", this, "anzeigen" );

    QLCDNumber *lcd2 = new QLCDNumber( 2, this, "lcd2" );
    lcd2->setSegmentStyle( QLCDNumber::Flat );

    connect( anzeigen, SIGNAL(clicked()), this, SLOT(slotZeigeLCDNummer())) );
}

int main( int argc, char **argv )
{
    QApplication a( argc, argv );

    MyWidget w;
    a.setMainWidget( &w );
    w.show();
    return a.exec();
}

Danke für eure Hilfe!


Tom
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

class MeineKlasse {

Q_OBJECT

private slots:
void meinSlot();
};

void MeineKlasse::meinSlot() {

// Tue etwas hier!
}
Antworten