PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gui unter QT programmieren...



ramonl
05-10-2004, 13:10
Habe ne Applikation die aus nem mainFrame mit diversen Buttons etc. besteht, und mit einem Haupt-Frame, in der Mitte des Bildschirms.


Nun will ich es schaffen, das , wenn man nen bestimmten slot aktiviert, also button drückt z.b. sich ein neuer Doalog, (also ne *.ui-datei) innerhalb des mainFrames in diesem bestimmten Bereich öffnet.


Wie geht das ?

paines
06-10-2004, 08:55
Das sollte ungefähr so gehen:

QObject::connect(pointerAufDeinenButton, SIGNAL(clicked()),
pointerAufdasFrameWoDasPassierenSoll,
SLOT(deinLustigerSlotderdenDialogStartet()));

am besten ist wenn dein anderes Fenster ne eigene Klasse ist:

z.B.



class myFrame : public QFrame {
...
....
public slots:
void createDialog();
};

....
....
int main int argc, char* argv[])
{
....
....
QWidget *mainWin=new QWidget;
myFrame *myFrame=new myFrame(NULL);
....
QButton *mybutton=new QButton("Click me",mainWin);
QObject::connect(mybutton, SLOT(clicked(), myFrame, createDialog());
}


Aber was du mit *.ui meinst weiss ich nicht.

Gruss
paines

ramonl
06-10-2004, 12:24
das hatte ja jetzt geklappt mit dem widget, aber nun brauche ich noch den Fall, dass ich nicht wie bisher, alles in dem Hauptframe unter qt programmiere, sondern meine einzelnen Fenster für das widget extra dialoge sind, die ich unter qt erstelle, und als eigene Klasse dann habe.

wie stelle ich das denn an ?

anda_skoa
06-10-2004, 13:00
Wenn du die .ui Dateien direkt laden willst, musst du die QWidgetFactory benutzen.

Ansonsten einfach die jeweilige Klasse instanziieren.

Ciao,
_

ramonl
06-10-2004, 16:18
wie,jetzt nicht mehr mitm QWidgetStack ? Dachte da sman da vllt. mit addWidget Objekte von dem Dialoge hinzufügen kann oder so ?

anda_skoa
07-10-2004, 18:01
Doch, schon.

Der Stack ist nur ein Container, damit man mehrer Widgets alterantiv anzeigen kann.

Die Frage ist, willst du diese Widgets laden, also direkt zur Laufzeit aus der .ui Datei erstellen, oder hast du eine kompilierte Klasse, wo also uic aus der. ui Datei Code generiert hat.

Im ersten Fall erzeugst man das Widget eben über die QWidgetFactory, im zweiten Fall über ganz normale Instanziierung mit "new"

In beiden Fällen kann man dann das erzeugte Widget mit addWigdet in einen WidgetStack geben.

In beiden Fällen gilt, wenn das Widget in einem anderen Widget eingebettet sein soll und kein eigenes Fenster werden soll, dann darf man im Designer nicht Dialog als Basis wählen, weil ein Dialog per Definition nunmal ein eigenständiges Fenster ist.

Ciao,
_