Seite 1 von 1

Variable von einer Klasse in einer anderen Klasse auslesen

Verfasst: 13. September 2009 11:26
von andi7
// main.cpp

#include <QtGui/QApplication>
#include "my_class.h"
#include <QApplication>
#include <QPushButton>
#include <QVBoxLayout>
#include <QLabel>
#include <QFont>
#include <QWidget>
#include <QObject>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget* win = new QWidget;

my_class nu00("TS1", 0, 0);
my_class nu01("BS1", 1, 0);

QGridLayout* layout = new QGridLayout(win);
QPushButton* n00= new QPushButton("TS1");
QPushButton* n01= new QPushButton("BS1");


layout->addWidget( n00 , 0, 0);
layout->addWidget( n01 , 1, 0);

QObject::connect(n00, SIGNAL(clicked()),
&nu00,SLOT( geklickt() ));
QObject::connect(n01, SIGNAL(clicked()),
&nu01, SLOT(geklickt()));

win->show();
return a.exec();
}


--------------------------------------------------------

//my_class.h

#ifndef MY_CLASS_H
#define MY_CLASS_H
#include <QObject>
#include <iostream>



class my_class : public QObject {
Q_OBJECT
public:
my_class(std::string, int, int); // Konstruktor
~my_class();
void place( int, int);
int On;

int auslesenx();
int ausleseny();
std::string butname;
public slots:
void geklickt();
signals:
//void ausfuehren(int x, int y);

private:
int Placex;
int Placey;

};

#endif


-------------------------------------------------------

//my_class.cpp

#include "my_class.h"

my_class::my_class(std::string a, int b, int c)
{
butname=a;
Placex=b;
Placey=c;
On==1;
int *zOn=&On;
}
my_class::~my_class()
{
}

int my_class::auslesenx()
{
return Placex;
}

int my_class::ausleseny()
{
return Placey;
}

void my_class::place(int x, int y)
{
Placex=x;
Placey=y;
}

void my_class::geklickt()
{
// Wie kann ich hier auf nu01.On zugreifen wenn ich in der Klasse nu00 bin?

}

Verfasst: 13. September 2009 13:36
von arj
Hallo,

es wäre schön, wenn Du deinen Code in entsprechende Code Tags stellen würdest und den Code dann etwas einrücken würdest. Dann kann man Dir auch einfacher helfen.

Einfache Antwort auf deine Frage: Du musst entweder per Constructor oder per Methode das nu01 Objekt an nu00 übergeben.

Längere Antwort:
Ich bezweifel, dass Du genau das benötigst. Ich habe mir den Code von Dir nicht komplett angesehen aber vermutlich sieht das eher nach einem Designfehler aus. Was möchtest Du denn eigentlich machen?

Verfasst: 13. September 2009 15:52
von andi7
Einfache Antwort auf deine Frage: Du musst entweder per Constructor oder per Methode das nu01 Objekt an nu00 übergeben.
Wie kann man dies machen?

Code: Alles auswählen

// main.cpp 

#include <QtGui/QApplication> 
#include "my_class.h" 
#include <QApplication> 
#include <QPushButton> 
#include <QVBoxLayout> 
#include <QLabel> 
#include <QFont> 
#include <QWidget> 
#include <QObject> 

int main(int argc, char *argv[]) 
{ 
QApplication a(argc, argv); 
QWidget* win = new QWidget; 

my_class nu00("TS1", 0, 0); 
my_class nu01("BS1", 1, 0); 

QGridLayout* layout = new QGridLayout(win); 
QPushButton* n00= new QPushButton("TS1"); 
QPushButton* n01= new QPushButton("BS1"); 


layout->addWidget( n00 , 0, 0); 
layout->addWidget( n01 , 1, 0); 

QObject::connect(n00, SIGNAL(clicked()), 
&nu00,SLOT( geklickt() )); 
QObject::connect(n01, SIGNAL(clicked()), 
&nu01, SLOT(geklickt())); 

win->show(); 
return a.exec(); 
}

Code: Alles auswählen

//my_class.h 

#ifndef MY_CLASS_H 
#define MY_CLASS_H 
#include <QObject> 
#include <iostream> 



class my_class : public QObject { 
Q_OBJECT 
public: 
my_class(std::string, int, int); // Konstruktor 
~my_class(); 
void place( int, int); 
int On; 

int auslesenx(); 
int ausleseny(); 
std::string butname; 
public slots: 
void geklickt(); 
signals: 
//void ausfuehren(int x, int y); 

private: 
int Placex; 
int Placey; 

}; 

#endif

Code: Alles auswählen

//my_class.cpp 

#include "my_class.h" 

my_class::my_class(std::string a, int b, int c) 
{ 
butname=a; 
Placex=b; 
Placey=c; 
On==1; 
int *zOn=&On; 
} 
my_class::~my_class() 
{ 
} 

int my_class::auslesenx() 
{ 
return Placex; 
} 

int my_class::ausleseny() 
{ 
return Placey; 
} 

void my_class::place(int x, int y) 
{ 
Placex=x; 
Placey=y; 
} 

void my_class::geklickt() 
{ 
// Wie kann ich hier auf nu01.On zugreifen wenn ich in der Klasse nu00 bin? 

}

Verfasst: 15. September 2009 08:23
von Hulk2442
Morgen
Die Übergabe eines Objektes, funktioniert genau so wie die Übergabe von Parametern!

Code: Alles auswählen

//in main
n00.empfangen(n01);

//in my_class.cpp
void my_class::empfangen(my_class empfangenesObjekt)
{
	// mach was mit mir
}
Jedoch wie schon arj geschrieben hat: Was möchtest Du denn eigentlich machen?

Verfasst: 15. September 2009 18:28
von andi7
Ich habe mal ein neuer Topic aufgemacht um alles zu erklären + bisheriger Gesamtcode + Alle Probleme und auch damit es übersichtlicher wird.
-> http://qtforum.de/forum/viewtopic.php?p=50043#50043