Seite 1 von 1

Austausch von QWidgets zwischen Klassen

Verfasst: 23. Mai 2012 11:42
von akirahinoshiro
Hallo,

Ich schaffe es nicht zwischen 2 Klassen Werte hin und her zu schieben.
Das Problem etwas genauer:
Ich erstelle eine Klasse MainWindow, hier wird das grobe Layout erstellt.
Wenn ich nun eine zweite Klasse so etwas wie InhaltTab erstelle, welches den Inhalt eines Tabs enthält und dort ein QLineEdit ist.
Wie schaffe ich es im MainWindow auf den Inhalt des QLineEdits zuzugreifen?

Oder ein anderes Beispiel: ein Options Menu, wie schaffe ich dem MainWindow zu sagen, die Optionen wurden geändert lies neu!
Und Auch dort Inhalte eines QLineEdit (oder beliebiges anderes) vom MainWindow zum Optionsmenu, bzw. zurück zu lesen/schreiben.

Ich bin zwar in der Lage Slots innerhalb der selben Klasse zu benutzen, etwa SIGNAL(clicked()), aber untereinander nicht.

Ich hoffe ich habe es verständlich erklärt und bitte um einen Hinweis, oder noch lieber ein kleines Beispiel Programm.
Danke

Re: Austausch von QWidgets zwischen Klassen

Verfasst: 23. Mai 2012 13:53
von akirahinoshiro
Ja bestimmt, ich habe aber gerade erst mit Qt angefangen und sehe die Bäume vor lauter Wald nicht, daher bitte ich um etwas Rücksicht und evtl. einen kleinen Code Snippet.

Re: Austausch von QWidgets zwischen Klassen

Verfasst: 23. Mai 2012 14:03
von Christian81

Re: Austausch von QWidgets zwischen Klassen

Verfasst: 23. Mai 2012 15:09
von akirahinoshiro
Naja wie gesagt ich hab das ganze mit Hilfe der Beispiele innerhalb einer Klasse hingekriegt.
Ich kann allerdings die Beispiele nicht direkt auf mein Problem übertragen.
Vielleicht seht ihr ja den/die Fehler wenn ich meine sourcen zeige.

main.cpp:

Code: Alles auswählen

#include "mainwindow.h"
#include <QApplication>

int main( int argc, char ** argv )
{
    QApplication app( argc, argv );
    MainWindow mainwindow;
    mainwindow.resize( 700, 800 );
    mainwindow.show();
    return app.exec();
}
mainwindow.h:

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);

protected:
    virtual void closeEvent(QCloseEvent *e);

private:
    void setupFileActions();
    void setupEditActions();
    void setupTextActions();
	QTabWidget *tabWidget;
	QAction *actionUndo;
	QString text;

public slots:
	void setText(const QString &newText) {text = newText;}
};


class Plot: public QwtPlot
{
    Q_OBJECT

public:
    Plot(QWidget * = NULL);

public Q_SLOTS:


private:
    QwtPlotSpectrogram *d_spectrogram;
};

class QTabWidget;

class GeneralTab : public QWidget
{
	Q_OBJECT

public:
	GeneralTab();

private:
	QLineEdit *testEdit;

public slots:
	//void tmp();

signals:
	//void mysignal(const QString &);
};

class blaTab : public QWidget
{
	Q_OBJECT

public:
	blaTab();

public slots:
	void setText(const QString &newText) {text = newText;}

private:	
	QString text;
};

#endif
mainwindow.cpp:

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    tabWidget = new QTabWidget;
    setCentralWidget(tabWidget);
	
    tabWidget->addTab(new GeneralTab(), tr("input"));
    tabWidget->addTab(new blaTab(), tr("surface"));	
}

blaTab::blaTab()
{	
}

GeneralTab::GeneralTab()
{
    testEdit = new QLineEdit();
    connect(testEdit, SIGNAL(textChanged(QString)),MainWindow,SLOT(setText(QString)));
}
PS: Ich habe den Code etwas gekürzt, es müsste aber alles für das Problem wichtige enthalten sein (ja ich weiß die #includes fehlen auch)
PPS: Der Fehlercode wäre evtl. auch interessant:
error C2275: 'MainWindow' : illegal use of this type as an expression