Seite 1 von 1
UI-Files und Zugriff auf die Objekte
Verfasst: 10. Mai 2009 08:47
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
Verfasst: 10. Mai 2009 11:47
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
Verfasst: 10. Mai 2009 14:02
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
Verfasst: 10. Mai 2009 15:37
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
Verfasst: 10. Mai 2009 17:19
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
Verfasst: 10. Mai 2009 17:22
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...
Verfasst: 10. Mai 2009 17:30
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
Verfasst: 10. Mai 2009 17:31
von Christian81
void speichern() <-- sieht das so aus als wäre sie in deiner Klasse?
Verfasst: 10. Mai 2009 17:39
von Sandhase
Ahhhhhhhhhhhhhhhhhhhh ich Depp
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