Qt doet het niet

Status
Niet open voor verdere reacties.

Voldemort

Gebruiker
Lid geworden
21 jul 2006
Berichten
111
Beste,

Ik draai hier op Linux Qt 3.3 (KDE) en Qt 4.1 (voor programmeren). Nu wil ik beginnen met Qt. (ik ken amper wat van C++, maar ik wil het leren adhv Qt, dat vind ik zelf leuker en ik wil geen reacties als: "Doe eerst in de konsole", want ik vind die te beperkt). Nu ging ik Hello World proberen te laten verschijnen. Dat doe ik zo:

Code:
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
 
    QPushButton hello("Hello world!");
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

Deze code komt van de Trolltech site.

g++ hello_world.cpp

hello_world.cpp:1:24: error: QApplication: Onbekend bestand of map
hello_world.cpp:2:23: error: QPushButton: Onbekend bestand of map
hello_world.cpp: In function ‘int main(int, char**)’:
hello_world.cpp:6: error: ‘QApplication’ was not declared in this scope
hello_world.cpp:6: error: expected `;' before ‘app’
hello_world.cpp:8: error: ‘QPushButton’ was not declared in this scope
hello_world.cpp:8: error: expected `;' before ‘hello’
hello_world.cpp:9: error: ‘hello’ was not declared in this scope
hello_world.cpp:12: error: ‘app’ was not declared in this scope

qmake hello_world.cpp

hello_world.cpp:4: Unknown test function: int main
hello_world.cpp:6: Unknown test function: QApplication app
hello_world.cpp:6: Parse Error ('QApplication app(argc, argv);')
Error processing project file: hello_world.cpp

- Hoe ben ik zeker dat ie Qt 4.1 gebruikt en niet 3.3?
- Waarom krijg ik deze errors?

Mvg,
Voldemort.
 
Niemand die me kan helpen? Als niemand me kan helpen, kent er dan niemand een goede Nederlandstalige Qt site/forum? En een goed Nederlandstalige C++ site/forum? (Niet dat dit forum niet goed is, maar als niemand me kan helpen kan men mij elders misschien helpen)
 
Ik heb geen verstand van QT maar al je errors komen door de eerste 2 regels van je code:

Code:
#include <QApplication>
#include <QPushButton>

De compiler kan deze 2 bestanden niet vinden en dus kun je ook geen gebruik maken van de QT-functies waardoor je alle andere errors krijgt. Als je deze 2 bestanden opzoekt op je HD en dan in je project-directory zet zou het moeten werken.

En een goed Nederlandstalige C++ site/forum?
Helaas, dit is de beste. Als je een goed C++ forum in het Engels wilt: klik

Groeten Niek

p.s. Ik weet dat je het niet wilt horen dus je kun hier stoppen met lezen......
Maar beginnen met console-apps is goed voor de C-kennis. Beginnen met andere libs, OO en api's is vragen om moelijkheden in de toekomst.
 
In open source projecten als KDE gebruiken ze ook #include <QApplication> en dergelijke, waarom werkt het daar dan wel?
 
waarom werkt het daar dan wel?
Geen idee, maar kun jij die projecten ook compilen? Zo ja: open zo'n poject en neem alle projectsettings (external lib-dirs etc) over in je eigen project. Meer kan ik er niet van zeggen, want ik ken QT helaas niet.

Groeten Niek
 
Ik heb QApplication naar de directory gekopieerd maar dat werkte niet (in QApplication.h stond #include "Qtstore/bestand.h" etc dus ik zou zowat half Qt moeten kopieren). Daarom probeer ik het zo:

Code:
#include <iostream>
#include </usr/include/Qt/QApplication>
#include </usr/include/Qt/QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPushButton hello("Hello world!");
    hello.resize(100, 30);

    hello.show();
    return app.exec();
}

En dan krijg ik:

Code:
/tmp/ccbJB5l8.o: In function `main':
hello_world.cpp:(.text+0x96): undefined reference to `QApplication::QApplication(int&, char**)'
hello_world.cpp:(.text+0xc3): undefined reference to `QPushButton::QPushButton(QString const&, QWidget*)'
hello_world.cpp:(.text+0x111): undefined reference to `QApplication::exec()'
hello_world.cpp:(.text+0x11f): undefined reference to `QPushButton::~QPushButton()'
hello_world.cpp:(.text+0x132): undefined reference to `QPushButton::~QPushButton()'
hello_world.cpp:(.text+0x142): undefined reference to `QApplication::~QApplication()'
hello_world.cpp:(.text+0x15b): undefined reference to `QApplication::~QApplication()'
/tmp/ccbJB5l8.o: In function `QString::~QString()':
hello_world.cpp:(.text._ZN7QStringD1Ev[QString::~QString()]+0x23): undefined reference to `QString::free(QString::Data*)'
/tmp/ccbJB5l8.o: In function `QString::QString(char const*)':
hello_world.cpp:(.text._ZN7QStringC1EPKc[QString::QString(char const*)]+0xc): undefined reference to `QString::shared_null'
hello_world.cpp:(.text._ZN7QStringC1EPKc[QString::QString(char const*)]+0x33): undefined reference to `QString::fromAscii(char const*, int)'
hello_world.cpp:(.text._ZN7QStringC1EPKc[QString::QString(char const*)]+0x48): undefined reference to `QString::operator=(QString const&)'
/tmp/ccbJB5l8.o: In function `QWidget::resize(int, int)':
hello_world.cpp:(.text._ZN7QWidget6resizeEii[QWidget::resize(int, int)]+0x2d): undefined reference to `QWidget::resize(QSize const&)'
collect2: ld returned 1 exit status

Waarom? Wat is er nu fout?
 
in QApplication.h stond....
#include </usr/include/Qt/QApplication>

Als het bestand QApplication.h heet, dan moet je die ook includen, niet QApplication. dus - >
Code:
#include </usr/include/Qt/QApplication.h>
Mocht het nog niet werken, dan zou ik zeggen dat je een include mist.

gr Niek
 
In QApplication staat:

Code:
#include <QApplication.h>

Dus veel maakt het niet uit.

In dat bestand QApplication.h staan er dan allemaal andere include's:

Code:
#include <QtCore/qcoreapplication.h>
#include <QtGui/qwindowdefs.h>
#include <QtCore/qpoint.h>
#include <QtCore/qsize.h>
#include <QtGui/qcursor.h>

De bestanden QApplication, QApplication.h en nog veel meer van zulke dingen bevinden zich in /usr/include/Qt/

1) Maar een map QTCore is daar niet. Dus hoe Qt erin slaagt te werken, I don't know.

2) En als ik QApplication(.h) moet kopieren, dan moet ik al die include's ook kopiëren en ik weet ze zelfs niet staan. Kan er iemand wat duidelijkheid creëren?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan