Seite 1 von 1
QDialog Text übergeben
Verfasst: 23. Dezember 2008 23:28
von Strahlex
Erstmal hallo und Frohe Weihnachten an alle!
Ich noch relativ neu in Qt, habe mich aber schon ein bisschen eingearbeitet, doch jetzt stehe ich an.
Ich will einen Text an meinen QDialog übergeben, der dann in einem LineEdit ausgegeben wird (eine Benutzernameneingabe).
Und zwar will ich den Dialog so aufrufen:
Code: Alles auswählen
ProxyDialog proxyDialog;
proxyDialog.setUser(user);
proxyDialog.setPass(pass);
proxyDialog.exec();
und im Dialog:
Code: Alles auswählen
void ProxyDialog::setUser(QString x)
{
ui->edtUser->setText(x);
user = x;
}
void ProxyDialog::setPass(QString x)
{
ui->edtPass->setText(x);
pass = x;
}
Leider funktionier das setText() nicht (warscheinlich weil das LineEdit ja vor exec() noch nicht erstellt ist). Wie realisiere ich also mein Vorhaben am einfachsten?

Verfasst: 26. Dezember 2008 22:35
von upsala
Funktioniert nicht, ist eine äußerst aufschlussreiche und hilfereiche Fehlermeldung...
Verfasst: 26. Dezember 2008 23:39
von Strahlex
upsala hat geschrieben:Funktioniert nicht, ist eine äußerst aufschlussreiche und hilfereiche Fehlermeldung...
Nur leider bekomm ich keine Fehlermeldung, beim Debuggen hängts immer beim setText()
Re: QDialog Text übergeben
Verfasst: 27. Dezember 2008 08:33
von macman
Strahlex hat geschrieben:Leider funktionier das setText() nicht (warscheinlich weil das LineEdit ja vor exec() noch nicht erstellt ist).
Wenn im Konstruktor deines ProxyDialog ein setupUi() drin steht, denn existiert das Lineedit auch. Ansonsten wüsste ich wirklich nicht, wo wir rumraten sollen.
Re: QDialog Text übergeben
Verfasst: 27. Dezember 2008 15:28
von Strahlex
macman hat geschrieben:Strahlex hat geschrieben:Leider funktionier das setText() nicht (warscheinlich weil das LineEdit ja vor exec() noch nicht erstellt ist).
Wenn im Konstruktor deines ProxyDialog ein setupUi() drin steht, denn existiert das Lineedit auch. Ansonsten wüsste ich wirklich nicht, wo wir rumraten sollen.
Hmmm, also setupUi(this) steht drinnen.
Verfasst: 27. Dezember 2008 15:48
von upsala
Hmmm, also setupUi(this) steht drinnen.
Naja, wenn es genau so drinnen steht, dann wundert es mich nicht, wenn sich der Debugger beschwert...
Verfasst: 28. Dezember 2008 22:53
von Strahlex
Was genau passt nicht?
Hier ist der Code:
proxydialog.h:
Code: Alles auswählen
#ifndef PROXYDIALOG_H
#define PROXYDIALOG_H
#include <QDialog>
#include "ui_proxydialog.h"
class ProxyDialog : public QDialog, private Ui::ProxyDialog
{
Q_OBJECT
public:
QString getUser();
QString getPass();
bool getSavepass();
ProxyDialog();
void setUser(QString x);
void setPass(QString x);
private:
Ui::ProxyDialog *ui;
QString user, pass;
bool savepass;
private slots:
void on_chbSavePass_toggled(bool checked);
void on_edtUser_textChanged(QString x);
void on_edtPass_textChanged(QString x);
};
#endif // PROXYDIALOG_H
proxydialog.cpp:
Code: Alles auswählen
#include "proxydialog.h"
ProxyDialog::ProxyDialog(){
ui->setupUi(this);
}
void ProxyDialog::setUser(QString x)
{
user = x;
ui->edtUser->setText(user);
}
void ProxyDialog::setPass(QString x)
{
pass = x;
ui->edtPass->setText(pass);
}
QString ProxyDialog::getUser()
{
return user;
}
QString ProxyDialog::getPass()
{
return pass;
}
bool ProxyDialog::getSavepass()
{
return savepass;
}
void ProxyDialog::on_edtUser_textChanged(QString x)
{
user = x;
}
void ProxyDialog::on_edtPass_textChanged(QString x)
{
pass = x;
}
void ProxyDialog::on_chbSavePass_toggled(bool checked)
{
savepass = checked;
}
Verfasst: 28. Dezember 2008 23:05
von franzf
Entweder erbst du von Ui::ProxyDialog, oder du machst dir ein Member.
Beides kommt bissl doof...
Und warum nen Pointer auf ui?
Außerdem initialisierst du ui nicht... böse, das sollte eigentlich in nem segfault enden :/
Verfasst: 31. Dezember 2008 18:26
von Strahlex
franzf hat geschrieben:Entweder erbst du von Ui::ProxyDialog, oder du machst dir ein Member.
Beides kommt bissl doof...
Und warum nen Pointer auf ui?
Außerdem initialisierst du ui nicht... böse, das sollte eigentlich in nem segfault enden :/
Ok, ok, das mit dem erben hab ich nicht ganz kapiert. Was genau soll ich da machen?
Den Pointer auf ui mache ich weils der Qt Creator auch so macht, also der Gleichheit wegen.
Verfasst: 1. Januar 2009 15:05
von franzf
Strahlex hat geschrieben:Ok, ok, das mit dem erben hab ich nicht ganz kapiert. Was genau soll ich da machen?
class ProxyDialog : public QDialog, private Ui::ProxyDialog
In dieser Zeile deklarierst du die Klasse ProxyDialog, und lässt sie erben von QDialog und Ui::ProxyDialog.
Zweiteres ist überflüssig, wenn du eh einen Member des Typs Ui::ProxyDialog hast!
Den Pointer auf ui mache ich weils der Qt Creator auch so macht, also der Gleichheit wegen.
Ist aber eigentlich unsinnig.
Wenn du es machst, dann bitte initialisier den auch im Konstruktor von ProxyDialog, sonst hagelst SegFaults!!!
Code: Alles auswählen
ProxyDialog::ProxyDialog()
: ui(new Ui::ProxyDialog)
{
ui->setupUi(this);
}
Verfasst: 3. Januar 2009 11:23
von solarix
Wenn du es machst, dann bitte initialisier den auch im Konstruktor von ProxyDialog, sonst hagelst SegFaults!!!
Und im Destruktor auch wieder freigeben... sonst hagelt's MLKs...
Verfasst: 4. Januar 2009 12:13
von Strahlex
Danke, funzt super, genau so wie ich es wollte!
