[gelöst] widgetobjekt aus anderen widget aus aufrufen

Alles rund um die Programmierung mit Qt
Antworten
Linuxguru
Beiträge: 96
Registriert: 14. Januar 2007 02:09

[gelöst] widgetobjekt aus anderen widget aus aufrufen

Beitrag von Linuxguru »

hallo allerseits

mein problem ist folgendes. ich habe in zwei klassen, welche von qwidget abgeleitet sind.

in klasse 1 befindet sich ein textedit. wie kann ich denn auf die eigenschaften des textedits von klasse 2 heraus reagieren.

ich habe die klasse1.h in der klasse2.h included.

hier noch etwas code

klasse1.cpp

Code: Alles auswählen

#include <QTextEdit>

Klasse1::Klasse1(QWidget *parent)
    : QWidget(parent)
{
    QTextEdit *edit = new QTextEdit(this);
    edit->setGeometry(10,10,400,300);
}
klasse2.cpp

Code: Alles auswählen

#include <QTextEdit>

Klasse2::Klasse2(QWidget *parent)
    : QWidget(parent)
{
    edit->setPointFontSize(9);
}
da bekomme ich natürlich ein fehler, weil edit in klasse 2 nicht deklariert ist.

danke
Zuletzt geändert von Linuxguru am 18. Mai 2007 00:37, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Irgendwer wird ja die beiden Klassen managen und der holt den Pointer des Textedits aus Klasse1 und teilt ihn Klasse2 mit, damit die Zugriff darauf hat.
UmmonTL
Beiträge: 16
Registriert: 8. März 2007 10:31

Beitrag von UmmonTL »

Genau, Klasse2 braucht irgendeine Art von Referenz auf die Instanz von Klasse1 bzw. das Textedit von dieser. Diese würde wahrscheinlich im Konstruktor mit übergeben also z.B.

Code: Alles auswählen

#include <QTextEdit>

Klasse2::Klasse2(QWidget *parent, Klasse1 *kl1)
    : QWidget(parent)
{
    kl1->getEdit()->setPointFontSize(9);
} 
Bei dieser Variante bräuchte Klasse1 noch eine public Methode getEdit() die einen Pointer auf das Textedit liefert. Denkbar wäre auch wie macman sagte, dass Klasse2 direkt den Pointer auf das Textedit im Konstruktor übergeben bekommt und getEdit() vom Manager der beiden benützt wird.
Linuxguru
Beiträge: 96
Registriert: 14. Januar 2007 02:09

Beitrag von Linuxguru »

irgendwie schnackel ich das nicht

ich hab nun klasse 1 wo mein edit(qtextedit) erzeugt wird.

Code: Alles auswählen

#include <QTextEdit> 

Klasse1::Klasse1(QWidget *parent) 
    : QWidget(parent) 
{ 
    edit = new QTextEdit(this); 
    edit->setGeometry(10,10,400,300); 
} 
die header dazu sieht dann so aus

Code: Alles auswählen

#ifndef KLASSE1_H
#define KLASSE1_H

#include <QTextEdit>

class Klasse1: public QWidget
{
	Q_OBJECT
public:
	Klasse1(QWidget *parent = 0);
	QTextEdit *edit;
	
public slots:

private:
};

#endif
so die cpp von klasse 2 wäre dann diese

Code: Alles auswählen

#include <QTextEdit> 

Klasse2::Klasse2(QWidget *parent, Klasse1 *kl1) 
    : QWidget(parent) 
{ 
    kl1->edit()->setPointFontSize(9); 
}
und die dazugehörige header wäre die

Code: Alles auswählen

#ifndef KLASSE2_H
#define KLASSE2_H

#include <QTextEdit>

class KLASSE2: public QWidget
{
	Q_OBJECT
public:
	Klasse1(QWidget *parent = 0, Klasse1 *kl1));
	QTextEdit *edit;
	
public slots:

private:
};
#endif
klasse 2 kann ja in dem moment mit klasse 1 nix anfangen. wo liegt denn noch mein fehler

danke für die hilfe!!!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was willst du eigentlich?

Fertigen Code? Gibts nicht!

Tips wie du dein Problem zu lösen ist? Dann lies die Antworten, die dir gegeben wurden!
Linuxguru
Beiträge: 96
Registriert: 14. Januar 2007 02:09

Beitrag von Linuxguru »

hallo upsala,

nein nein, ich möchte keine feritge lösung. ich hab da nur ein verständnisproblem. hänge nun schon 3 tage dran irgendwo im netz beispiele zu finden.

wenn ich klasse 1 includiert habe, kann ich mit

Code: Alles auswählen

Klasse1 *testklasse = new Klasse1()
testklasse->edit->setText("test");
ein widget erstellen und auf das objekt edit zugreifen, allerdings existiert klasse 1 ja schon, also kann ich da auch keine neue erstellen.
windows verursacht dadurch ein problem.

ein beispiel oder link dazu wäre hilfreich, um das ganze besser zu verstehen.

danke
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Einer von vielen: C++-Grundlagen
Linuxguru
Beiträge: 96
Registriert: 14. Januar 2007 02:09

Beitrag von Linuxguru »

hab es hinbekommen.

danke!!! @UmmonTL und macman
Antworten