Einführung in die Sprache Go anhand von Beispielen
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.8 KiB

package gui
import (
"os"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/uitools"
"github.com/therecipe/qt/widgets"
)
func SesamÖffneDich() {
//1. Eröffne eine neue Applikation (als eine Sammlung von Widgets)
widgets.NewQApplication(len(os.Args), os.Args) // ... übergebe Kommandozeilenparameter (ansonsten "nil")
//2. Erzeuge ein Widget
var widget = widgets.NewQWidget(nil, 0)
//3. Lade UI/QML (Qt Meta-object Language)-Datei und erzeuge damit indirekt
// auch das Haupt-Fenster.
var loader = uitools.NewQUiLoader(nil)
var file = core.NewQFile2("./gui/qml/formular.ui")
file.Open(core.QIODevice__ReadOnly)
var formWidget *widgets.QWidget = loader.Load(file, widget)
file.Close()
//4. Erzeuge Input-Widgets aus QML-Datei
var (
ui_textinputEingabefeld = widgets.NewQTextEditFromPointer(widget.FindChild("textinputEingabefeld", core.Qt__FindChildrenRecursively).Pointer())
ui_buttonAusloeser = widgets.NewQPushButtonFromPointer(widget.FindChild("buttonAusloeser", core.Qt__FindChildrenRecursively).Pointer())
)
//5. Weise dem Knopf ein Signal zu, das beim Drücken eine Funktion ausführen soll
ui_buttonAusloeser.ConnectClicked(func(checked bool) {
widgets.QMessageBox_Information(nil, "Titel des Infofensters", ui_textinputEingabefeld.ToPlainText(), widgets.QMessageBox__Ok, widgets.QMessageBox__Ok)
})
//6. Erzeuge ein Layout und weise es dem Widget zu
var layout = widgets.NewQVBoxLayout()
//8. Weise dem Widget ein Layout zu und weise dem Layout die Input-Widges zu
widget.SetLayout(layout)
layout.AddWidget(formWidget, 0, 0)
//9. Ändere Attribute, falls nötig
widget.SetWindowTitle("Titel des Hauptfensters Nr. 2")
//10. Zeichne das Haupt-Fenster
widget.Show()
//11. Damit die Applikation dynamisch auf Benutzereingaben/Events reagieren
// kann, muß sie in einer Endlosschleife laufen
widgets.QApplication_Exec()
}