UI-Files und Zugriff auf die Objekte

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Sandhase
Beiträge: 13
Registriert: 9. Mai 2009 20:53

UI-Files und Zugriff auf die Objekte

Beitrag von Sandhase »

Hallo liebe Forengemeinde,

ich bin n och relativ neu zu QT und habe jetzt angefangen mit dem QTCreator zua rbeiten. Infolgedessen habe ich nun auch mal meine GUI mit dem Designer zusammengeklickt, allerdings habe ich da jetzt das Problem, dass ich in meiner gui.cpp nicht auf die Objekte der GUI zugreifen kann. Als Compilerfehlermeldung bekomme ich "objektname" was not declared in this scope.

Der entsprechende ui-header ist inkludiert und eigentlich sollte das ganze funktionieren.
Hab auch schon gegoogelt, aber mangels geeigneter Begriffe zum Beschrieben des Problems bin ich da auch nicht wirklich weiter gekommen. Es ist wahrscheinlich wohl nur irgend ein kleiner Fehler,a ber ich steht gerade vorm Scheunentor.

ich wollte zugreifen mittels: QString string = lineOrt->text(); als Beispiel.

Über Antworten würde ich mich sehr freuen.
Greez
Sandhase
Raien
Beiträge: 17
Registriert: 19. März 2009 12:45

Beitrag von Raien »

Hi,

die UI ist über das private Member ui erreichbar (wer häts gedacht ;)).
Also einfach vor deinen Beispielcode noch "ui->" dranhängen dann müssts klappen.

Gruß
Raien
Sandhase
Beiträge: 13
Registriert: 9. Mai 2009 20:53

Beitrag von Sandhase »

Hallo,

danke für die schnelle Hilfe, funktioniert aber leider nur teilweise. Den Zugriff im Konstruktor der GUI Klasse konnte ich so lösen, allerdings greife ich noch in einem selbst definierten Slot auf die Elemente zu. Dort bekomme ich nun die Meldung, dass ui nicht deklariert wurde.

Ich habe dann probiert mittels dem globalen Zugriff über gui::ui->etc.. zuzugreifen udn zumindest über die Kontextmenus des QTCreators konnte ich auch alles entsprechende auswählen, allerdings bekomme ich dann beim bauen wiederum neue Fehler, dass ui ja private ist.
Würde es helfen ui als static zu definieren?

Greez
Sandhase
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

1) Du erbst Private von deiner UI-Klasse, dann sind die ganzen ui-Elemente automatisch Teil deiner Klasse.
2) Du gibst deiner Klasse einen Member des Typs deiner Ui-Klasse. dann können alle Methoden deiner Klasse auf die ui-Elemente zugreifen.

Mehr gibts hier
Sandhase
Beiträge: 13
Registriert: 9. Mai 2009 20:53

Beitrag von Sandhase »

Hmmm...

also wenn ich da gerade richtig durchgeblickt hab, dann hab ich den Punkt, den du unter 2. genannt hast eigentlich. in meinem gui.h ist ja ein member der ui-klasse definiert.

ich stell einfach mal meine gui.h und gui.cpp rein...

gui.h:

Code: Alles auswählen

#ifndef GUI_H
#define GUI_H

#include <QtGui/QMainWindow>

namespace Ui
{
    class guiClass;
}

class gui : public QMainWindow
{
    Q_OBJECT

public:
    gui(QWidget *parent = 0);
    ~gui();
public slots:

    void speichern();

private:
    Ui::guiClass *ui;
};

#endif // GUI_H 
gui.cpp:

Code: Alles auswählen

#include "gui.h"
#include "ui_gui.h"
#include "calcMethods.h"

gui::gui(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::guiClass)
{
    ui->setupUi(this);

    connect(ui->saveQN,SIGNAL(clicked()),this,SLOT(speichern()));
}

void speichern()
{
    int number;
    int day;
    int month;
    int year;
    double betrag;
    QString ort;
    QString zweck;
    QString sonstiges;
    QString owner;

    QString help;
    QString date;

    number =ui->lineQNR->text();
    betrag =ui->lineBetrag->text().toDouble();
    ort = ui->lineOrt->text();
    zweck =ui->lineZweck->text();
    owner = ui->comboBTunten->currentText();
    sonstiges = ui->textEditSonstiges->toPlainText();
    date = ui->lineDate->text();
    help = date.section('.',0,0);
    day = help.toInt();
    help = date.section('.',1,1);
    month = help.toInt();
    help = date.section('.',2,2);
    year = help.toInt();

    neueQuittung(number,day,month,year,betrag,ort,zweck,sonstiges,owner);

}

gui::~gui()
{
    delete ui;
}
 
Dankeschön
Greez
Sandhase
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

ui ist ja auch nur in der Klasse gui definiert (was nicht falsch ist) und deine Funktion ist igendwie nicht in der Klasse...

ab nach C++ Grundlagen damit...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Sandhase
Beiträge: 13
Registriert: 9. Mai 2009 20:53

Beitrag von Sandhase »

Okay...aber warum ist sie denn nicht in der Klasse?

Sie ist doch als Slot der Klasse GUI definiert, oder seh ich da etwas falsch? Dann müsste sie doch in der Klasse sein integriert sein...?

Greez
Sandhase
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

void speichern() <-- sieht das so aus als wäre sie in deiner Klasse?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Sandhase
Beiträge: 13
Registriert: 9. Mai 2009 20:53

Beitrag von Sandhase »

Ahhhhhhhhhhhhhhhhhhhh ich Depp :D

Okay ja danke...ich weiß wodran es liegen (sollte)
Dankeschön...Schönes Brett vorm Kopf....wie wahnsinnig schnell man aus der ganzen Sache rauskommt ist wahnsinn.

Greez
Sandhase
Antworten