QT4 und QTDesigner

Alles rund um die Programmierung mit Qt
Antworten
abenstex
Beiträge: 30
Registriert: 12. September 2006 16:33

QT4 und QTDesigner

Beitrag von abenstex »

Hallo zusammen,

vorab: es ist schon ein wenig her, dass ich in C++/Qt programmiert habe, also habt Nachsicht.
So jetzt zu meinem Problem. Ich habe mit Hilfe des Designers einen Dialog erstellt, den ich jetzt natürlich auch ganz gern mal hernehmen würde. Deshalb hab ich eine Klasse von meiner ui-Datei/Klasse abgeleitet, aber irgendwie will das nicht so wie ich:

Code: Alles auswählen

#include <QApplication>
//#include "ui_LoginDialog.h"
#include "ui/LoginDialogImpl.h"
#include <QWidget>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
	//QWidget *w = new QWidget();
	LoginDialogImpl d;// = new LoginDialogImpl(0); <-undefined reference to LoginDialogImpl::LoginDialogImpl(QWidget *)
	d.show();
        //d->show();
	
    return app.exec(); <- undefined reference to LoginDialogImpl::~LoginDialogImpl
}
Hier ist die Klasse LoginDialogImpl:

Code: Alles auswählen

#ifndef LOGINDIALOGIMPL_H_
#define LOGINDIALOGIMPL_H_

#include "ui_LoginDialog.h"
//#include <QDialog>
#include <QWidget>

class LoginDialogImpl : public QDialog, private Ui::LoginDialog
{

	Q_OBJECT
	
public:
	LoginDialogImpl(QWidget *parent = 0);
	virtual ~LoginDialogImpl();
	
private:
	//Ui::LoginDialog _dialog;
	
private slots:
	void on_okButton_clicked();
	void on_cancelButton_clicked();
	
};

#endif /*LOGINDIALOGIMPL_H_*/


#include "LoginDialogImpl.h"
#include <iostream.h>

LoginDialogImpl::LoginDialogImpl(QWidget *parent) 
	: QDialog(parent)
{
	
	setupUi(this);
	
	connect(okButton, SIGNAL(clicked()), this, SLOT(on_okButton_clicked()));
	connect(cancelButton, SIGNAL(clicked()), this, SLOT(on_cancelButton_clicked()));
	
}

LoginDialogImpl::~LoginDialogImpl()
{
}

void LoginDialogImpl::on_okButton_clicked()
{
	cout << "About to connect!" << endl;
}

void LoginDialogImpl::on_cancelButton_clicked()
{
	cout << "Cancelling" << endl;	
}
In der Header bzw. CPP-Datei treten laut gcc keine Fehler auf nur in der main-Methode findet er irgendwie die Kon- bzw. Destruktoren nicht.

Vielen Dank schonmal!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Das ist kein Compiler- sondern ein Linkerfehler. Du musst entweder schön qmake verwenden bzw. ui/LoginDialogImpl.cpp compilieren und mit hinzulinken.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
abenstex
Beiträge: 30
Registriert: 12. September 2006 16:33

Beitrag von abenstex »

Das ist mir gar nciht aufgefallen *schäm*, aber aus irgendeinem Grund fehlt die CPP-Datei zur UI-Datei. Die Header-Datei ist aber erstellt worden. Gibt es dafür eine vernünfitge Erklärung? Ich muss dazu sagen, dass ich das ganze Projekt unter Eclipse mit CDT und der Qt-Erweiterung erstelle, also vielleicht liegt da der Fehler, obwohl immer qmake aufgerufen wird wenn ich das Projekt erstelle.
Antworten