Seite 1 von 1

Anfängerfrage: LCDNum, PushButton und LCDNum verbinden

Verfasst: 13. April 2005 20:03
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

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

Verfasst: 14. April 2005 08:39
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

Verfasst: 14. April 2005 19:04
von FlorianBecker
connect( button, SIGNAL( clicked() ), this, SLOT( slotZeigeNummerAufLCD() ) );

slotZeigeNummerAufLCD() { lcd -> setValue( slider -> value() ); }

Verfasst: 15. April 2005 03:01
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

Verfasst: 15. April 2005 03:21
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

Verfasst: 15. April 2005 07:01
von FlorianBecker
class MeineKlasse {

Q_OBJECT

private slots:
void meinSlot();
};

void MeineKlasse::meinSlot() {

// Tue etwas hier!
}