fensterkommunikation
fensterkommunikation
hallo!
ich bin recht neu hier und leider auch ein qt und c++ -looser... wenn ich also etwas dummes frage, liegt das nicht daran, dass ich das Handbuch nicht gelesen habe...
Ich bekomme es nicht hin eine variable an eine neue form zu übergeben und dann von dieser eine andere zurückzubekommen.
ich suche also nach dem int funktion(QString test) oder so in meinem neuen Fenster. kann mir da jemand helfen??
danke!
ich bin recht neu hier und leider auch ein qt und c++ -looser... wenn ich also etwas dummes frage, liegt das nicht daran, dass ich das Handbuch nicht gelesen habe...
Ich bekomme es nicht hin eine variable an eine neue form zu übergeben und dann von dieser eine andere zurückzubekommen.
ich suche also nach dem int funktion(QString test) oder so in meinem neuen Fenster. kann mir da jemand helfen??
danke!
nein
nein, ich habe ein gaaaanz allgemeines problem: ich habe ein mainwindow.
jetzt erstelle ich eine neue fensterklasse, zum Beispiel irgendeinen dialog, der von Mainwindow aus aufgerufen wird.
bei c# finde ich jetzt eine funktion im neuen fenster, der ich eine variable übergeben und die dann etwas anderes returnen kann. bei qt finde ich nur irgendwelche konstruktoren, die mir nix sagen...
im mainwindow sollte irgendwas stehen wie
NeuesFenster f;
QString returnte_variable = f.show(übergebene variable)
jetzt erstelle ich eine neue fensterklasse, zum Beispiel irgendeinen dialog, der von Mainwindow aus aufgerufen wird.
bei c# finde ich jetzt eine funktion im neuen fenster, der ich eine variable übergeben und die dann etwas anderes returnen kann. bei qt finde ich nur irgendwelche konstruktoren, die mir nix sagen...
im mainwindow sollte irgendwas stehen wie
NeuesFenster f;
QString returnte_variable = f.show(übergebene variable)
Du rufst show ohne Parameter auf. Richtest dir member Variablen in der neuen Klasse ein und setzt diese mit setVar(var).
Ok ich sehe wo es bei dir hängt. Du willst einen modalen Dialog mit Rückgabewert aufrufen. Das geht auch nicht mit show(), das machst du mit exec(). In diesem Falle setzt du deinen benötigten Variablen vor dem Aufruf.
exec gibt allerdings nur accept und reject zurück, welches du über Button oder ähnliches steuern kannst. Wenn dir das nicht genug ist, kannst du dir QDialog ableiten.
Code: Alles auswählen
private:
int var;
public:
void setVar(int var);
exec gibt allerdings nur accept und reject zurück, welches du über Button oder ähnliches steuern kannst. Wenn dir das nicht genug ist, kannst du dir QDialog ableiten.
ahhhh
AH! Danke, das Prinzip habe ich jetzt verstanden - ich habe also das:
in meinem Hauptfenster, und in der Header vom Filter das:
stehen. Leider bekomme ich jetzt noch eine Fehlermeldnung, nämlich:
undefinied reference to Filter::setVar(QString)
was mache ich da?
danke!
[/code][/quote]
Code: Alles auswählen
void MainWindow::on_b_filter_clicked()
{
filter f;
f.setVar(datenbank);
f.exec();
}
Code: Alles auswählen
...
class filter : public QDialog {
Q_OBJECT
Q_DISABLE_COPY(filter)
public:
explicit filter(QWidget *parent = 0);
virtual ~filter();
void setVar(QString datenbank);
protected:
virtual void changeEvent(QEvent *e);
private:
Ui::filter *m_ui;
QString datenbank;
...
undefinied reference to Filter::setVar(QString)
was mache ich da?
danke!
[/code][/quote]
habe ich:
ich habe den private datenbank rausgeschmissen und QString db in filter.cpp global, also vor den Funktionen gesetzt... die undefi. reference bekomme ich aber trotzdem noch. hm...
danke übrigens für die Geduld! ich bin leider Physik-Student und soll so einen Bildverabeitungsfilter in eine GUI anbauen.
Code: Alles auswählen
void setVar(QString datenbank)
{
db = datenbank;
}
danke übrigens für die Geduld! ich bin leider Physik-Student und soll so einen Bildverabeitungsfilter in eine GUI anbauen.
Es muss aber so aussehen:mine hat geschrieben:habe ich:
Code: Alles auswählen
void setVar(QString datenbank) { db = datenbank; }
Code: Alles auswählen
void filter::setVar(QString datenbank)
{
db = datenbank;
}
Linux, das längste Text-Adventure aller Zeiten
Code: Alles auswählen
QString filter::getVar()
{
return db;
}
int bla()
{
QString bla = dialog->getVar();
}
Du kannst die set Prozeduren auch gleich in die Headerdatei schreiben, das ist auf Dauer übersichtlicher.
Code: Alles auswählen
public:
int var() const {return myVar;}
void setVar(const int x) {myVar = x;}
private:
int myVar;