QObject::connect

Alles rund um die Programmierung mit Qt
Antworten
<Biohazard>
Beiträge: 8
Registriert: 7. Mai 2006 16:19
Wohnort: Hofheim
Kontaktdaten:

QObject::connect

Beitrag 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:
Bild
Nobody is perfect
Saiyaman
Beiträge: 111
Registriert: 20. Mai 2005 13:52

Beitrag von Saiyaman »

Nutzt du Qt3.x? Bei Qt4.x gibt's kein "QApplication.setMainWidget(..)".

Inkludiere doch mal QtCore bzw. QtGui komplett.

MfG
<Biohazard>
Beiträge: 8
Registriert: 7. Mai 2006 16:19
Wohnort: Hofheim
Kontaktdaten:

Beitrag 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)
Bild
Nobody is perfect
Anschar
Beiträge: 12
Registriert: 3. Mai 2006 20:13
Kontaktdaten:

Beitrag 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
Anschar
Beiträge: 12
Registriert: 3. Mai 2006 20:13
Kontaktdaten:

Beitrag 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
beReal
Beiträge: 7
Registriert: 8. April 2006 15:18
Kontaktdaten:

Beitrag 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 ;)
Windows is not the answer. It's a question and the answer is NO.
Antworten