Seite 1 von 1

[gelöst]QtDesigner - Frage zur Anwendung

Verfasst: 6. Dezember 2008 11:11
von speed04
servus qt-leute,

ich würde gern mit dem designer ein mainwindow erstellen und dann ausgehend von dem mainwindow mit einem button ein neues widget/dialog öffnen. das sollte im designer zu gestalten sein. nun bekomme ich es aber nicht hin, dem designer zu sagen, dass er den button "verlinken" soll und dann ein neues widget öffnen muss. funktioniert mein gedankengang überhaupt oder muss man für ein widget eine seperate *ui datei anlegen und diese dann im code verlinken?

hat schon jemand erfahrung damit gemacht und kann mir nen hinweis oder hilfestellung geben???

THX

Verfasst: 6. Dezember 2008 11:49
von MiKla
Der Designer ist nur zum Erstellen der Oberfläche. Die logischen Verbindungen musst Du im Programm erzeugen (Signal/Slot).

Michael

Verfasst: 6. Dezember 2008 11:55
von speed04
danke für die schnelle antwort, also muss ich sozusagen für jedes widget/dialog dann eine extra *.ui datei anfertigen und diese dann einbinden und die verknüpfungen (signal/slot) schreiben! okay das hatte ich mir fast gedacht!

da habe ich aber im anschluss noch ne frage, muss ich für jede *.ui datei auch eine neue klasse anlegen oder können mehrere *.ui dateien in eine klasse?

Verfasst: 6. Dezember 2008 12:18
von MiKla
Ich habe immer für jede Oberfläche eine eigene Klasse. Mehrere Oberflächen in einer Klasse hab ich noch gar nicht probiert, spricht meiner Meinung nach auch gegen den Objekt orientiert Ansatz

Michael

Verfasst: 6. Dezember 2008 12:24
von speed04
aha okay, ich habe das schonmal probiert bin dann aber daran gescheitert, dass in der main.cpp alles miteinander in einklang zu bringen.

so würde meine main.cpp aussehen, wenn ich eine klasse hätte.

Code: Alles auswählen

#include "empfaenger.h"
#include <QtGui>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    empfaenger w;
    w.show();
    return a.exec();
}
wie müsste ich das denn schreiben, um mehrere klassen zu vereinen?
hast du da nen tip oder hinweis für mich???

THX

Verfasst: 6. Dezember 2008 12:34
von MiKla
Wie startest Du den "Datei öffnen" Dialog? Das ist nichts anderes. Das heißt Du musst in der Hauptfenster Klasse Deinen anderen Dialog/Klasse einbinden und abhängig von einer Bedingung (Button?) starten/anzeigen!!

abstrakt:

Code: Alles auswählen

#include "ui_Hauptfenster"
#include "neuerDialog.h"

connect(button, SIGNAL(clicked()), this, SLOT(starteDialog)); 

...starteDialog()
{
    neuerDialig dlg();
   dlg.show();
}
...
Ich hoffe das hilft Dir etwas weiter.

Verfasst: 6. Dezember 2008 19:28
von speed04
mh, ich glaube ich habe mich ungünstig ausgedrückt.

ich habe mir mit dem designer ein mainwindow erstellt. auf diesem mainwindow befinden sich u.a. checkboxen und pushbuttons. ich habe nun eine main.cpp, eine wert.cpp und eine wert.h.
in dieser wert.h habe ich ja nun die klasse definiert und auch die erstellte datei vom designer eingebunden.
nun möchte ich mit dem designer einen neuen dialog kreieren. so und nun komme ich nicht richtig weiter, das ich einen connect befehl schreiben muss in meiner wert.cpp datei ist verständlich. damit kann ich das neue dialog öffnen, aber in welcher datei muss ich denn jetzt die erstellte ui datei einbinden? nutze ich dafür eine neue headerdatei? wenn ich eine neue headerdatei verwende, dann bekomme ich aber probleme mit dem setupui(this) befehl in der wert.cpp.

ohje ich hoffe das ist verständlich ausgedrückt, wo mein schuh drückt!
bin über hilfe, anregungen und infos dankbar!

thx

Verfasst: 6. Dezember 2008 20:13
von MiKla
Vielleicht verstehe ich Dich auch nicht richtig. Ich habe mal ein Testprojekt angehangen, so wie ich es verstanden habe. Vielleicht hilft Dir das weiter.

Michael

Verfasst: 6. Dezember 2008 20:21
von speed04
vielen vielen dank, du hast das von anfang an richtig verstanden!
es lag an mir! nun kann ich mich gut an dem beispiel orientieren!!!

ich glaube sonst würde ich noch ewig rumsuchen und probieren!

THX!!!!

Verfasst: 8. Dezember 2008 10:48
von RHBaum
ich glaube sonst würde ich noch ewig rumsuchen und probieren!
oder alternativ halt auch mal das tutorial durcharbeiten ...
Das Tut was von Trolltech mitgeliefert wird, bringt einen schon das eine Oberflaeche = eine klasse schon sehr nahe, und wie man an beliebieger stelle im code einen Dialog, auch einen benutzerdefinierten, startet, ist auch Thema eines eigenen Kapitels.

Du solltest Dich zuerst an den vorhanden Tutorials orientieren, dann erst an den Beispielen ...

Ciao ...

Verfasst: 8. Dezember 2008 12:01
von speed04
@rhbaum: nenn mir doch bitte ein tutorial, wo genau das behandelt wird was ich angefragt habe!!!

Verfasst: 8. Dezember 2008 12:08
von macman
speed04 hat geschrieben:@rhbaum: nenn mir doch bitte ein tutorial, wo genau das behandelt wird was ich angefragt habe!!!
Ein Tutorial ist nicht dazu da deine Probleme zu lösen. Ein Tutorial soll die Arbeitsweise verständlich machen, damit Du deine Probleme selber lösen kannst. Ein Tutorial wird so gut wie nie das enthalten, was man selbst benötigt.

Verfasst: 8. Dezember 2008 12:15
von speed04
danke nochmal an michael.klank für deine hilfe!

kann geschlossen werden!

Verfasst: 8. Dezember 2008 13:53
von RHBaum
nenn mir doch bitte ein tutorial, wo genau das behandelt wird was ich angefragt habe!!!
z.b. QT Dokumentation fuer qt4.4
Adress Book Kapitel 5 - Adding a Find function

Da wird eigentlich genau gezeigt, wie man nen eigenen Dialog in nem benutzerdefinierten Slot aufruft.

Ansonsten in der QT Reference Documentation

unter QDialog

wird im allgemeinen teil beschrieben, wie man von Benutzerdefinierte dialoge erstellen kann und wie man die verwendet ...

Ciao ....

Verfasst: 8. Dezember 2008 14:10
von speed04
ja ist in ordnung du hast absolut recht!

thx