Seite 1 von 1

[gelöst] undefined reference to QFormBuilder

Verfasst: 7. Oktober 2005 12:23
von Jonez
Hi,
ich fang gerade erst mit Qt 4 an und obwohl noch fast nix bei mir läuft, find ich es schon klasse :)
Nur jetzt häng ich grad an folgendem:

Da ich meine Oberflächen mit dem Designer erstellen will, muss ich ja den "QFormBuilder" verwenden, wenn ich das bis jetzt richtig verstanden hab.. ?
Allerdings erhalte ich beim kompilieren immer den Fehler:

Code: Alles auswählen

clsMainForm.o(.text+0x68): In function `clsMainForm::clsMainForm[in-charge](QWidget*)':
clsMainForm.cpp: undefined reference to `QFormBuilder::QFormBuilder[in-charge]()'
clsMainForm.o(.text+0x118):clsMainForm.cpp: undefined reference to `QAbstractFormBuilder::load(QIODevice*, QWidget*)'
clsMainForm.o(.text+0x3f6):clsMainForm.cpp: undefined reference to `vtable for QFormBuilder'
...
mein Projekt besteht bis jetzt aus folgenden 3 Dateien:

passwordmanager.cpp

Code: Alles auswählen

#include <QApplication>

#include "clsMainForm.h"

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

    clsMainForm *mainForm = new clsMainForm;
    mainForm->show();

    return app.exec();
}
clsMainForm.cpp

Code: Alles auswählen

#include <QtGui>
#include <QFormBuilder>

#include "clsMainForm.h"

clsMainForm::clsMainForm(QWidget *parent)  : QWidget(parent) {
    QFormBuilder builder;
    QFile file("mainform.ui");
    file.open(QFile::ReadOnly);
    QWidget *formWidget = builder.load(&file, this);
    file.close();

    btnAdd 		= qFindChild<QPushButton*>(this, "btnAdd");
    btnEdit 		= qFindChild<QPushButton*>(this, "btnEdit");
    btnDel 			= qFindChild<QPushButton*>(this, "btnDel");
    lstPasswords 	= qFindChild<QListView*>(this, "lstPasswords");

    QMetaObject::connectSlotsByName(this);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(formWidget);
    setLayout(layout);

    setWindowTitle(tr("Password Manager"));
}

void clsMainForm::on_btnAdd_pressed() {}

void clsMainForm::on_btnEdit_pressed() {}

void clsMainForm::on_btnDel_pressed() {}
clsMainForm.h

Code: Alles auswählen

#ifndef CLSMAINFORM_H
#define CLSMAINFORM_H

#include <QWidget>
#include <QPushButton>
#include <QListView>

class clsMainForm : public QWidget {
    Q_OBJECT

public:
    clsMainForm(QWidget *parent = 0);

private slots:
    void on_btnAdd_pressed();
    void on_btnEdit_pressed();
    void on_btnDel_pressed();

private:
    QPushButton *btnAdd;
    QPushButton *btnEdit;
    QPushButton *btnDel;
    QListView *lstPasswords;
};

#endif
Als entwicklungsumgebung verwende ich kdevelop.
Als include-Verzeichnise hab ich praktisch alle aus /usr/local/Trolltech/4.0.1/include angegeben.

Kann mir da irgendjemand weiterhelfen?

1000 Dank,
Jonas

Verfasst: 7. Oktober 2005 15:57
von klogg
Geht das unter Linux so völlig anders als unter Windows?

Wenn nicht, dann lies mal in der Hilfe des QDesigners
das Kapitel Using Forms and Components -> Using a Component in Your Application

HENNING

Verfasst: 7. Oktober 2005 16:31
von Jonez
Hi,
bin ich gerade dabei :)
Ich hab mir die Beispiele und Tutorials angesehen, und bei den Beispielen wird es zumindest so gemacht.

Ich probier's mal,
trotzdem wunder ich mich noch über den Fehler, da es in den Beispielanwendungen ja funktioniert..

thanx, jonas

Verfasst: 7. Oktober 2005 18:33
von dani
In welchem Beispiel wird das denn verwendet?

Verfasst: 7. Oktober 2005 19:22
von Jonez
examples/designer/calculatorbuilder

das war das einzigste was ich gefunden hab, wo wirklich .ui - dateien verwendet werden.
Wie verwendet "Ihr" denn diese .ui - Dateien? In der Hilfe stehen ja 3 Möglichkeiten: Direct, Single und Multiple Approach ..

Ich versuch mein Glück gerade noch an der "Single Inheritance Approach" - Methode, bekomm es aber noch nicht richtig hin...

thanx,
jonas

Verfasst: 7. Oktober 2005 22:15
von Jonez
Hi,
okay, ich glaub ich hab's raus :)

Thanx,
Jonas