kitech
qt.go
Go

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

Last updated Jun 1, 2026
563
Stars
34
Forks
20
Issues
0
Stars/day
Attention Score
48
Language breakdown
Go 99.9%
Shell 0.0%
Makefile 0.0%
C 0.0%
Files click to expand
README

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 Status Go Report Card GoDoc Sourcegraph

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 examples: https://github.com/kitech/qt.go/examples/ https://github.com/qtchina/qt.go.demos/

Go side signal/slot: syntax document usage demo

Community

* QQ groupchat 933636020 * Telegram room https://t.me/qtdevjiaoliu (Thanks https://github.com/xiayesuifeng)

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

🔗 More in this category

© 2026 GitRepoTrend · kitech/qt.go · Updated daily from GitHub