Austausch von QWidgets zwischen Klassen

Alles rund um die Programmierung mit Qt
Antworten
akirahinoshiro
Beiträge: 17
Registriert: 22. Mai 2012 20:17

Austausch von QWidgets zwischen Klassen

Beitrag 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
akirahinoshiro
Beiträge: 17
Registriert: 22. Mai 2012 20:17

Re: Austausch von QWidgets zwischen Klassen

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Austausch von QWidgets zwischen Klassen

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
akirahinoshiro
Beiträge: 17
Registriert: 22. Mai 2012 20:17

Re: Austausch von QWidgets zwischen Klassen

Beitrag 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
Antworten