Seite 1 von 1
[gelöst] QT Designer UI file MainWindow und Action
Verfasst: 6. Dezember 2009 03:00
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?
Verfasst: 6. Dezember 2009 08:03
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.
Verfasst: 6. Dezember 2009 16:19
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???
Verfasst: 6. Dezember 2009 18:14
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?
Verfasst: 6. Dezember 2009 18:37
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.
Verfasst: 6. Dezember 2009 22:29
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