Qt5 binding for Go (Golang) without CGO that aims to achieve Go's native compile speeds. Instead of using common bindings and heavy C++ wrapper code that forces you to compile and link time and time again, Qt.Go uses FFI so there's only a runtime dependency.
All platforms should be supported, for now some of them are tested:
Make sure libffi is installed
Debian based: apt-get install libffi-dev
Arch based: pacman -S libffi
MacOS: brew install libffi
go get -v -u github.com/kitech/qt.go
git clone https://github.com/kitech/qt.inline.git
cd qt.inline
cmake .
make
cp libQt5Inline.so /usr/lib/libQt5Inline.so
go get -v -u github.com/kitech/qt.go/cmd/go-uic
go get -v -u github.com/kitech/qt.go/cmd/go-rcc
package main
import "os"
import "github.com/kitech/qt.go/qtwidgets"
func main() {
app := qtwidgets.NewQApplication(len(os.Args), os.Args, 0)
btn := qtwidgets.NewQPushButton1("hello qt.go", nil)
btn.Show()
app.Exec()
}
More complex examples: https://github.com/kitech/qt.go/examples/ https://github.com/qtchina/qt.go.demos/
Go side signal/slot: syntax document usage demo
Qt.Go uses FFI to call wrapped Qt functions and methods, so there is no compile/link time dependency on Qt, only a run time dependency.
This should make the development and testing phases much faster.