McRip
22-12-2003, 20:45
also ich wollte ein Programm schreiben welches 3 Knöpfe 1 Schieberegler und 1 "LCD-Anzeige" mit einem Knopf sollte nun die Zahl auf dem LCD-Display erhöht(gleichzeitig der Schieberegler) und mit einem anderen verringert und mit dem 3. auf den Default-Wert vom 50 gesetzt werden ... die Zahl sollte sich ausserdem mit dem Schieberegler einstellen lassen ... okay hört sich eigentlich total einfach an aber wie kann ich eine Connection zwischen dem clicked() vom default-button(auf 50 setzen) und dem setValue von QSlider herstellen? ich hab das ganze durch eine neue Klasse machen wollen welche dazu einen neuen Solt hat ... aber schauts euch einfach mal an:
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qlabel.h>
#include "kapache.h"
class Def : public QSlider //Klasse mit dem Slot zum "auf standart-wert zurücksetzen"
{
Q_OBJECT
public:
Def(int max,int min,int schritt,int deff, char const bla, QWidget *parent) :
QSlider(max,min,schritt,deff,QSlider::Horizontal, parent)
public slots:
void deffff(char const Slidername)
{
Slidername*->setValue(50);
}
};
int main(int argc, char* argv[] )
{
QApplication KSlider (argc,argv);
QWidget* Hauptwidget = new QWidget();
Hauptwidget->setGeometry(400,300,200,150);
/*QSlider* Slider = new QSlider (0,
99,
1,
50,
QSlider::Horizontal,
Hauptwidget);
Slider->setGeometry(10,10,180,30);*/
Def* Slider = new Def (0,
99,
1,
50,
QSlider::Horizontal,
Hauptwidget);
Slider->setGeometry(10,10,180,30);
QLCDNumber* LCD = new QLCDNumber( 2,Hauptwidget);
LCD->setGeometry(60,50,80,50);
LCD->display(50);
QObject::connect(Slider, SIGNAL(valueChanged(int)), LCD, SLOT(display(int)));
QPushButton* hoch = new QPushButton("hoch",Hauptwidget);
hoch->setGeometry(10,110,50,30);
QObject::connect(hoch,SIGNAL(clicked()), Slider, SLOT(addStep()));
QPushButton* runter = new QPushButton("runter",Hauptwidget);
runter->setGeometry(140,110,50,30);
QObject::connect(runter,SIGNAL(clicked()), Slider,SLOT(subtractStep()));
KSlider.setMainWidget(Hauptwidget);
QPushButton* defalt = new QPushButton("default",Hauptwidget);
defalt->setGeometry(75,110,50,30);
QObject::connect(defalt,SIGNAL(clicked()), Def,SLOT(deffff("Slider")));
Hauptwidget->show();
return KSlider.exec();
}
und wieso funktioniert das nun nicht? das bekomme ich als Output von KDevelop:
main.cpp: In constructor `Def::Def(int, int, int, int, char, QWidget*)':
main.cpp:32: error: parse error before `;' token
main.cpp:35: error: `Slidername' undeclared (first use this function)
main.cpp:35: error: (Each undeclared identifier is reported only once for each
function it appears in.)
main.cpp:35: error: parse error before `;' token
main.cpp: In function `int main(int, char**)':
main.cpp:82: error: parse error before `,' token
Bitte helft mir bin schon total am verzweifeln ...
und ja ich möchte das ganze mit einer neuen Klasse machen da ich das auch lernen möchte :))
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
#include <qlabel.h>
#include "kapache.h"
class Def : public QSlider //Klasse mit dem Slot zum "auf standart-wert zurücksetzen"
{
Q_OBJECT
public:
Def(int max,int min,int schritt,int deff, char const bla, QWidget *parent) :
QSlider(max,min,schritt,deff,QSlider::Horizontal, parent)
public slots:
void deffff(char const Slidername)
{
Slidername*->setValue(50);
}
};
int main(int argc, char* argv[] )
{
QApplication KSlider (argc,argv);
QWidget* Hauptwidget = new QWidget();
Hauptwidget->setGeometry(400,300,200,150);
/*QSlider* Slider = new QSlider (0,
99,
1,
50,
QSlider::Horizontal,
Hauptwidget);
Slider->setGeometry(10,10,180,30);*/
Def* Slider = new Def (0,
99,
1,
50,
QSlider::Horizontal,
Hauptwidget);
Slider->setGeometry(10,10,180,30);
QLCDNumber* LCD = new QLCDNumber( 2,Hauptwidget);
LCD->setGeometry(60,50,80,50);
LCD->display(50);
QObject::connect(Slider, SIGNAL(valueChanged(int)), LCD, SLOT(display(int)));
QPushButton* hoch = new QPushButton("hoch",Hauptwidget);
hoch->setGeometry(10,110,50,30);
QObject::connect(hoch,SIGNAL(clicked()), Slider, SLOT(addStep()));
QPushButton* runter = new QPushButton("runter",Hauptwidget);
runter->setGeometry(140,110,50,30);
QObject::connect(runter,SIGNAL(clicked()), Slider,SLOT(subtractStep()));
KSlider.setMainWidget(Hauptwidget);
QPushButton* defalt = new QPushButton("default",Hauptwidget);
defalt->setGeometry(75,110,50,30);
QObject::connect(defalt,SIGNAL(clicked()), Def,SLOT(deffff("Slider")));
Hauptwidget->show();
return KSlider.exec();
}
und wieso funktioniert das nun nicht? das bekomme ich als Output von KDevelop:
main.cpp: In constructor `Def::Def(int, int, int, int, char, QWidget*)':
main.cpp:32: error: parse error before `;' token
main.cpp:35: error: `Slidername' undeclared (first use this function)
main.cpp:35: error: (Each undeclared identifier is reported only once for each
function it appears in.)
main.cpp:35: error: parse error before `;' token
main.cpp: In function `int main(int, char**)':
main.cpp:82: error: parse error before `,' token
Bitte helft mir bin schon total am verzweifeln ...
und ja ich möchte das ganze mit einer neuen Klasse machen da ich das auch lernen möchte :))