// 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?
}
Variable von einer Klasse in einer anderen Klasse auslesen
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?
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?
Wie kann man dies machen?Einfache Antwort auf deine Frage: Du musst entweder per Constructor oder per Methode das nu01 Objekt an nu00 übergeben.
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;
};
#endifCode: 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?
}Morgen
Die Übergabe eines Objektes, funktioniert genau so wie die Übergabe von Parametern!
Jedoch wie schon arj geschrieben hat: Was möchtest Du denn eigentlich machen?
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
}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
-> http://qtforum.de/forum/viewtopic.php?p=50043#50043