Seite 1 von 1

[gelöst] Anfängerproblem: compilieren

Verfasst: 25. November 2007 00:48
von qtNiko
hi,

eigentlich habe ich bereits einige einfache Qt-Programme hingekriegt, aber jetzt stehe ich auf dem Schlauch. Ich wollte einige Tests mit den Grafikfunktioen von Qt machen.


1. Mit Designer ein QWidget namens Form mit Button und einem QGraphicsView namens graphicsView erzeugt
2. graphics.h

Code: Alles auswählen

#include <QDialog>
#include "ui_Grafiktest.h"

class Grafiktest : public QDialog, private Ui::Form
{
	Q_OBJECT
	
	public:
	Grafiktest(QWidget *parent=0);
	
	private slots:
	void on_pushButton_clicked();
	
	protected:
	void paintEvent(QPaintEvent * event);
	QPixmap  bild;
}
3. graphics.cpp dazu:

Code: Alles auswählen

#include <QtGui>
#include <QtCore>  // für QString, etc.
#include <QDialog>
#include "graphics.h"

/* functions der Klasse Grafiktest: */
Grafiktest::Grafiktest(QWidget *parent) : QDialog(parent)             <--hier Fehler1
{		/* Constructor von Grafiktest */ 
	setupUi(this);
	
}

void Grafiktest::on_pushButton_clicked() {
	
	QString fileName = QFileDialog::getOpenFileName(this, "Bilddatei wählen", 
							"/mnt/data/Daten/Bilder");
	bild.load(fileName);
}

void Grafiktest::paintEvent(QPaintEvent * /* event */)  {
	
	QPainter painter(graphicsView);
	painter.drawPixmap(0, 0, bild);
	painter.end();
}
4. das graphics_main.cpp dazu:

Code: Alles auswählen

#include <QApplication>
#include "graphics.h"

int main(int argc, char *argv[])                         <-- hier Fehler2
{
    // verzStr=argv[0];		g++ kennt verzStr hier nicht???
    QApplication app(argc, argv);
    Grafiktest uiwin;
    uiwin.show();
    return app.exec();
}
Mit graphics.h ist der Comiler zufrieden. Aber in graphics.cpp meldet er (Fehler1)
error: new types may not be defined in a return type
error: return type specification for constructor invalid
note: (perhaps a semicolon is missing after the definition of 'Grafiktest')

und in graphics_main.cpp (Fehler2)
error: new types may not be defined in a return type
error: two or more data types in declaration of ‘main’
error: ‘::main’ must return ‘int’ <--- in anderen funktionierenden Programmen sieht main genauso aus
note: (perhaps a semicolon is missing after the definition of ‘Grafiktest’)

Ausserdem werden 2 Fehler in moc_graphics.cpp gemeldet. Diese Datei wird jedoch automatisch erzeugt!
Ich bin ratlos :cry:

Verfasst: 25. November 2007 09:06
von upsala
(perhaps a semicolon is missing after the definition of ‘Grafiktest’)
Was ist daran nicht verständlich?
g++ kennt verzStr hier nicht???
Woher auch?

Und du weist, daß es beim compilieren Folgefehler geben kann.

Verfasst: 25. November 2007 21:12
von qtNiko
hi,

na ja, es war gestern schon sehr spät - zu spät :?
Ich hab jede Zeile überprüft, nur nicht am Ende nach "}"

Das mit verzStr war ein Rest von copy,paste und nicht Gegenstand meiner Anfrage.

Danke für die Geduld mit einem Anfänger