Seite 1 von 1

QObject::connect

Verfasst: 8. Mai 2006 15:31
von <Biohazard>
Hallo Leute,
bin seit gestern prima weiter gekommen, vor allem, da sich mein Installierproblem gelöst hat. Nun habe ich mit einem Code Probleme. Ich gehe ihn schon die ganze Zeit durch, finde jedoch nichts Fehlerhaftes. Ich habe auch den Code mehrmals mit dem im Buch und auf der CD verglichen, aber Fehlanzeige.
Hier der Code:

Code: Alles auswählen

#include <qapplication.h>
#include <qslider.h>
#include <qspinbox.h>
#include <qhbox.h>
int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	QHBox *hbox = new QHBox(0);
	hbox->setCaption("Geben Sie ihr ALter ein");
	hbox->setMargin(6);
	hbox->setSpacing(6);
	QSpinBox *spinBox = new QSpinBox(hbox);
	QSlider *slider = new QSlider(Qt::Horizontal, hbox);
	spinBox->setRange(0, 130);
	slider->setRange(0, 130);
	QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider,              SLOT(setValue(int));
	QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int));
	spinBox->setValue(35);
	app.setMainWidget(hbox);
	hbox->show();
	return app.exec();
}
Als Fehlermeldung kommt in den beiden Zeilen 16+17
"Fehler E2121:Fehlt beim Funktionsaufruf in Funktion qMain (int, char * *)"

Danker für eure Hilfe,
<Biohazard> :wink:

Verfasst: 8. Mai 2006 15:36
von Saiyaman
Nutzt du Qt3.x? Bei Qt4.x gibt's kein "QApplication.setMainWidget(..)".

Inkludiere doch mal QtCore bzw. QtGui komplett.

MfG

Verfasst: 8. Mai 2006 18:33
von <Biohazard>
So, mein Problem hat sich geregelt. Leider habe ich in den zwei Zeilen zwei Zeichen übersehen, und so entstand der Fehler. Es fehlte nur eine abschließende Klammer, jeweils an beiden Enden der Zeilen.

Danke dennoch für eure Hilfe,
besonders Saiyaman 8)

Verfasst: 27. Mai 2006 13:58
von Anschar
Lustigerweise geht es bei mir immernoch net.

Code: Alles auswählen

#include "stdafx.h" //da ich mit VC++ 2005 Express arbeite
#include <QtGui>
#include <QtCore>

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QHBox *hbox = new QHBox(0);
   hbox->setCaption("Geben Sie ihr Alter ein");
   hbox->setMargin(6);
   hbox->setSpacing(6);
   QSpinBox *spinBox = new QSpinBox(hbox);
   QSlider *slider = new QSlider(Qt::Horizontal, hbox);
   spinBox->setRange(0, 130);
   slider->setRange(0, 130);
   QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
   QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
   spinBox->setValue(35);

   hbox->show();
   return app.exec();
}
Folgende Meldungen:
1>.\QT-Programm.cpp(8) : error C2065: 'QHBox': nichtdeklarierter Bezeichner
1>.\QT-Programm.cpp(8) : error C2065: 'hbox': nichtdeklarierter Bezeichner
1>.\QT-Programm.cpp(8) : error C2061: Syntaxfehler: Bezeichner 'QHBox'
1>.\QT-Programm.cpp(9) : error C2227: Links von "->setCaption" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1> Typ ist ''unknown-type''
1>.\QT-Programm.cpp(10) : error C2227: Links von "->setMargin" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1> Typ ist ''unknown-type''
1>.\QT-Programm.cpp(11) : error C2227: Links von "->setSpacing" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1> Typ ist ''unknown-type''
1>.\QT-Programm.cpp(20) : error C2227: Links von "->show" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1> Typ ist ''unknown-type'
liegt eindeutig an QHBox ... warum aber? was ich aber auch noch festgestellt habe ist, dass ich keine qhbox.h im QtGui-include verzeichnis habe.es ist nur eine qhboxlayout enthalten.

Viele Dank im voraus!

mfG
Anschar

Verfasst: 28. Mai 2006 11:57
von Anschar
Da mir ja keiner helfen wollte ^^... hier ist die richtige Lösung für Qt4 .

Code: Alles auswählen

#include "stdafx.h" //da ich mit VC++ 2005 Express arbeite
#include <QtGui>
#include <QtCore>

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   QWidget *hbox = new QWidget;
   QSpinBox *spinBox = new QSpinBox(hbox);
   QSlider *slider = new QSlider(Qt::Horizontal, hbox);
   spinBox->setRange(0, 130);
   slider->setRange(0, 130);
   QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
   QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
   spinBox->setValue(35);

   QHBoxLayout *layout = new QHBoxLayout;
   layout->addWidget(spinBox);
   layout->addWidget(slider);
   hbox->setLayout(layout);
   hbox->show();
   return app.exec();
}
mfG
Anschar

Verfasst: 29. Mai 2006 22:00
von beReal
QAssisent beutzen oder Doku lesen bringt eben doch was. In Qt4 wurden QHBox durch QHBoxLayout und QVBox durch QVBoxlayout ersetzt. Aber Du hast es ja schon herausgefunden ;)