QDialog einen String übergeben
QDialog einen String übergeben
Hallo zusammen !
Meine Frage ist einfacher Natur. Wie greife ich auf ein Objekt zu, was ich vor dem erzeugen eines Dialogs erstellt habe? Oder wie übergebe ich einem Dialog beim Starten einen String ?
Danke im voraus...
Meine Frage ist einfacher Natur. Wie greife ich auf ein Objekt zu, was ich vor dem erzeugen eines Dialogs erstellt habe? Oder wie übergebe ich einem Dialog beim Starten einen String ?
Danke im voraus...
Etwa so?:
MfG, Cedric
Code: Alles auswählen
class MyDialog : public QDialog
{
public:
MyDialog(QWidget* parent = 0, Qt::WFlags f = 0);
private:
QString m_string;
public:
void setString(const QString& s);
};
MyDialog::MyDialog(QWidget* parent, Qt::WFlags f)
: QDialog(parent, f)
{
//...
}
void MyDialog::setString(const QString& s)
{
m_string = s;
}
Im Programm folgender Aufruf:
------------------------------------
meinDialog dialog(this);
dialog.setString("test");
dialog.exec();
Datei meinDialog.h:
--------------------------
#include <QDialog>
class meinDialog : public QDialog
{
Q_OBJECT
public:
meinDialog(QWidget *parent = 0);
void setString( QString mystring ) { testString = mystring; }
const QString& getString() const { return testString; }
private:
QString testString;
};
Datei meinDialog.cpp:
-----------------------------------
#include <QtGui>
#include "meinDialog.h"
meinDialog::meinDialog(QWidget *parent)
: QDialog(parent)
{
QMessageBox::about(this, tr("Test Message"),
getString() );
...
}
#endif
------------------------------------
meinDialog dialog(this);
dialog.setString("test");
dialog.exec();
Datei meinDialog.h:
--------------------------
#include <QDialog>
class meinDialog : public QDialog
{
Q_OBJECT
public:
meinDialog(QWidget *parent = 0);
void setString( QString mystring ) { testString = mystring; }
const QString& getString() const { return testString; }
private:
QString testString;
};
Datei meinDialog.cpp:
-----------------------------------
#include <QtGui>
#include "meinDialog.h"
meinDialog::meinDialog(QWidget *parent)
: QDialog(parent)
{
QMessageBox::about(this, tr("Test Message"),
getString() );
...
}
#endif
-
GwarDrazul
- Beiträge: 23
- Registriert: 5. Juni 2006 18:56
Das liegt daran, dass Du getString() im Konstruktor der Klasse aufrufst. setString() wird aber erst nach dem Erstellen des Objektes (= nach Konstruktoraufruf) aufgerufen. Darum ist getString() im Konstruktor noch der ursprüngliche wert.
Schreibe Dir einen zweiten/anderen Konstruktor, der so aussiet:
und in der main.cpp dann:
Hoffe, das hilft.
Gruß
Schreibe Dir einen zweiten/anderen Konstruktor, der so aussiet:
Code: Alles auswählen
meinDialog::meinDialog(const QString& string, QWidget *parent = 0)
{
testString = string;
// restliche Konstruktor Aufgaben...
}
Code: Alles auswählen
meinDialog dialog("test",this);
dialog.exec();
Gruß
Außerdem solltest du, da du an dieser Stelle nicht beabsichtigst mystring zu ändern, diesen als konstante Referenz übergeben, um unnötige Kopiervorgänge zu vermeiden.bmeyer hat geschrieben:Code: Alles auswählen
void setString( QString mystring ) { testString = mystring; }
MfG, Cedric