df4ian
24-08-2006, 23:29
Moin Kinners,
ich lerne gerade den Umgang mit QT und habe das Schieberegler-Tutorial
umzustricken versucht. Der Schieberegler gibt ein int aus und das LC-Display zeigt dieses int dann an.
Soweit das Tutorial.
Ich habe nun versucht den int-Wert des Sliders (Schieberegler) mittels zusätzlicher Elementfunktion/Slot von einem int auf ein double abzuändern.
Das Anzeigen des Wertes funktioniert. Allerdings passiert beim Aufrufen der SlotFunktion welche das int in ein double wandeln soll überhaupt gar nix.
Wo liegt der Denkfehler?
/************************************************** **************
**
** Qt tutorial 5
**
************************************************** **************/
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qvbox.h>
class Test : public QLCDNumber //Meine erste erfolgreiche Vererbung. Whoaw !
{
int i;
double d;
public:
Test (int, QWidget *parent=0, const char *name=0 );
double GibAus (void);
public slots:
void GibEin (int);
};
Test::Test (int , QWidget *parent, const char *name )
: QLCDNumber( parent, name )
{
i=5;
}
double Test::GibAus (void) {
//d=7.1;
return d;
}
void Test::GibEin (int j) { // hier soll das int des Sliders reinkommen
d = j;
d*=0.5;
}
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" );
Test *lcd1 = new Test( 4, this, "lcd1" );
QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 3 );
// connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) ); // funzt
connect( slider, SIGNAL(valueChanged(int)), lcd1, SLOT (GibEin(int)) ); // macht keinen Mucks
lcd1->display( lcd1->GibAus() );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
Joachim
ich lerne gerade den Umgang mit QT und habe das Schieberegler-Tutorial
umzustricken versucht. Der Schieberegler gibt ein int aus und das LC-Display zeigt dieses int dann an.
Soweit das Tutorial.
Ich habe nun versucht den int-Wert des Sliders (Schieberegler) mittels zusätzlicher Elementfunktion/Slot von einem int auf ein double abzuändern.
Das Anzeigen des Wertes funktioniert. Allerdings passiert beim Aufrufen der SlotFunktion welche das int in ein double wandeln soll überhaupt gar nix.
Wo liegt der Denkfehler?
/************************************************** **************
**
** Qt tutorial 5
**
************************************************** **************/
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qfont.h>
#include <qvbox.h>
class Test : public QLCDNumber //Meine erste erfolgreiche Vererbung. Whoaw !
{
int i;
double d;
public:
Test (int, QWidget *parent=0, const char *name=0 );
double GibAus (void);
public slots:
void GibEin (int);
};
Test::Test (int , QWidget *parent, const char *name )
: QLCDNumber( parent, name )
{
i=5;
}
double Test::GibAus (void) {
//d=7.1;
return d;
}
void Test::GibEin (int j) { // hier soll das int des Sliders reinkommen
d = j;
d*=0.5;
}
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" );
Test *lcd1 = new Test( 4, this, "lcd1" );
QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 3 );
// connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) ); // funzt
connect( slider, SIGNAL(valueChanged(int)), lcd1, SLOT (GibEin(int)) ); // macht keinen Mucks
lcd1->display( lcd1->GibAus() );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
Joachim