Zugriff von QDialog auf Elemente von QMainWindow

Alles rund um die Programmierung mit Qt
Antworten
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Zugriff von QDialog auf Elemente von QMainWindow

Beitrag von jd »

Hallo, ich öffne aus ein QMainWindow über das Menü ein QDialog. In dem QDialog geben ich einige Daten ein, die dann verarbeitet werden. Nach der Verarbeitung innerhalb des QDialoges möchte ich den Text von QLabel, weches sich in QMainWindow befindet ändern.

Wie bekomme ich Zugriff von dem QDialog auf Elemente von QMainWindow?

Ich habe mir gedacht das ich ein Pointer von meiner QMainWindow-Klasse an den QDialog übergeben muss, nur weiß ich nicht wie ich das machen muss.

Hat da jemand einen Tipp für mich?

so long
jd
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Sorry, das ist keine Qt-Frage sondern basic c++.
Ich würde im Dialog eine getFoo() - Funktion einbauen die die gewünschten Daten zurückliefert.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Ok das habe ich gemacht, aber nicht in meinen Kopf geht, warum kann ich von außen nicht auf Public-Methoden zugreifen?

Code: Alles auswählen

class CDialogConnect : public QDialog, private Ui::DialogConnect {
	Q_OBJECT
	public:
		CDialogConnect();
		~CDialogConnect();
		QString getServerInfo();
}
So in meiner QMainWindow Klasse mach ich folgendes:

Code: Alles auswählen

void CMainWindow::openDialogConnect() {
	connectDialog = new CDialogConnect;
	do {
		connectDialog->show();
	} while (!connectDialog->Accepted);

	if (connectDialog->Accepted) {
		QString request = connectDialog->getServerInfo() );
	}
}
Ich bekomme die Meldung:
class QDialog’ has no member named ‘getServerInfo

Wieso class QDialog? ich habe doch ein Object von CDialogConnect, was lediglich von QDialog erbt.
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Überprüf mal ob die Definition von "connectDialog" ebenfalls deine neue Dialog Klasse ist.
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Problem gelöst:

Code: Alles auswählen

connectDialog = new CDialogConnect;
	QString requestInfo;

	if (connectDialog->exec() == CDialogConnect::Accepted) {
		QMessageBox::information(this, tr("FromMain"), connectDialog->getServerInfo());
	}
Peter dein Verdacht war richtig.

Danke euch allen
Antworten