Skip to content

Qt binding for Go (Golang) aims get Go's compile speed again.

License

Notifications You must be signed in to change notification settings

kitech/qt.go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

qt.go

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.

Build StatusGo Report CardGoDocSourcegraph

Features

  • Binding code with no CGO compile cost
  • Popular Qt5 packages (widgets/QML/extras) support
  • Simple go-uic, go-rcc tools
  • full signal/slot support
  • protected method override support
  • default arguments and value wrapper functions
  • Class/Method/Function/Enum comment for godoc
  • Go side signal/slot definition (experimental)

Multiple platforms support

All platforms should be supported, for now some of them are tested:

  • Archlinux/Ubuntu16+
  • MacOS
  • Android
  • Windows

Installation

requirement
  • go 1.9+
  • libffi
  • dlfcn (windows)
FFI

Make sure libffi is installed

Debian based: apt-get install libffi-dev

Arch based: pacman -S libffi

MacOS: brew install libffi

qt.go:
go get -v -u github.com/kitech/qt.go 
runtime dependency:
git clone https://github.com/kitech/qt.inline.git cd qt.inline cmake . make cp libQt5Inline.so /usr/lib/libQt5Inline.so 
uic/rcc
go get -v -u github.com/kitech/qt.go/cmd/go-uic go get -v -u github.com/kitech/qt.go/cmd/go-rcc 

Full Installation

Examples

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 documentusage demo

Community

Internals

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.

Internal document

About

Qt binding for Go (Golang) aims get Go's compile speed again.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

close