[gelöst] QT Designer UI file MainWindow und Action

Verschiedenes zu Qt
Antworten
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

[gelöst] QT Designer UI file MainWindow und Action

Beitrag von 24dan »

Hi,
Wie bekomme ich meine Aktionen (Menu & Taskbar) in QT Designer gebaut in meiner MainWindow GUI verknüpft?

Folgende Dinge sind schon fertig:
- komplette ui Datei mit Menü und Taskbar + Icons
- ressource Datei mit den ICONs ist angelegt und dem Projekt bekannt
- Habe ein einfaches GUI Projekt angelegt und eine Klasse MainWindow
- Applikation läst sich soweit schon kompilieren und startet jedoch ohne Funktionalität.


??? Muss ich jetzt nochmal eine Taskbar händisch im mainwindow.cpp bauen um meine Funktionen wie Open, save, New, bla blub zu nutzen?
Zuletzt geändert von 24dan am 13. Dezember 2009 15:18, insgesamt 1-mal geändert.
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Das kennst du schon?
http://qt.nokia.com/doc/4.6/designer-us ... -file.html
Im Prinzip läuft es genauso wie wenn du deine GUI händisch schreibst.
Du bekommst übder das .ui deine Actions, die du händisch oder per auto-connect an deine MainWindow-Slots binden kannst.

Schau dir doch einfach mal die Examples an (umsonst sind die ja nicht dabei...), da gibt es eigentlich genügend Inspiration.
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Danke habe ich mir auch schon angelesen.
Werde die Beispiele mal durch suchen.

Also ich habe verstanden:
Ich lege mir also diese allgemeinen Funktionen an
createActions();
createMenus();
createToolBars();

Und fülle diese dann z.B. in MainWindow::createAction()
mit meinen Actions aus dem UI verbinde Sie mit den png und den Funktionen wie load save bla bla?

PS: Lösung?
1. Baue Deine MenuAction mit QT Designer (Namen bekanntegeben, Icon, Shortcut bla bla)
2. und in MainWindow::createActions() nur noch die connect() aufrufen und zur entsprechenden Funktion im Programmcode verlinken

Richtig???
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Sieht dann so aus:

HEADER:

Code: Alles auswählen

private slots:
    void about();

private:
    Ui::MainWindow *ui;
    void createActions();
SOURCE:

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    createActions();   //EXP
}

void MainWindow::createActions()
{
    connect(ui->action_oeffnen, SIGNAL(triggered()), this, SLOT(about()));
}

void MainWindow::about(){Stuff}
und funktioniert..... oder ist das blödsinn und geht einfacher?
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

24dan hat geschrieben:und funktioniert..... oder ist das blödsinn und geht einfacher?
Wenn es funktioniert und sich nicht wie ganz böser Hack anfühlt kann es doch kein Blödsinn sein.
Es ist genau so wie es gedacht ist. Nur dass die Methode natürlich nicht createActions heißen muss, und natürlich der ein connect nicht in eine extra Methode ausgelagert werden muss.

Trotzdem geht es noch einfacher, vor allem wenn man richtig viele Slots und Actions und sonstwas hat, die man verbinden will:
http://qt.nokia.com/doc/4.6/designer-us ... onnections
Mach es aber nur, wenn du es verstehst wie es geht, und du meinst es bringt einen großen Nutzen.
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Klasse Danke!

QT Designer ist echt super:
1. ui.file erstellen
2. resource.file erstellen
3. alle connect richtig betiteln
4. icons und eigenschaften zuweisen
5. und im gui projekt wird der rest einfach erkannt
6. connection zuweisen und ab gehts
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Antworten