0506a9f95d
This commit replaces the default (cgo) binding with a cgo-less one, which was generated by setting "QT_GEN_GO=true" prior running qtsetup. The cgo-less version is still experimental and also lacking integration with most of the advanced features provided by qtmoc and qtrcc, but it should already be sufficiently stable and cover a great part of the basic features. The intention for these changes are to simplify and speedup onboarding of new users, speedup development circles of existing users, simplify the usage of this package in a go module context and also to have the portable therecipe/qt runtime (http://github.com/therecipe/box) tested more broadly. Also since this version removes all dependencies on cgo, one is now able to "go get" an project that makes use of therecipe/qt like this: ("go get -ldflags="-w" github.com/therecipe/examples/basic/widgets && $(go env GOPATH)/bin/widgets") without any additional requirements. |
||
---|---|---|
androidextras | ||
bluetooth | ||
charts | ||
cmd | ||
core | ||
datavisualization | ||
dbus | ||
designer | ||
felgo | ||
flutter | ||
gamepad | ||
gui | ||
help | ||
internal | ||
interop | ||
location | ||
macextras | ||
multimedia | ||
network | ||
nfc | ||
positioning | ||
printsupport | ||
purchasing | ||
qml | ||
quick | ||
quickcontrols2 | ||
remoteobjects | ||
sailfish | ||
script | ||
scripttools | ||
scxml | ||
sensors | ||
serialbus | ||
serialport | ||
speech | ||
sql | ||
svg | ||
testlib | ||
uitools | ||
virtualkeyboard | ||
webchannel | ||
webengine | ||
webkit | ||
websockets | ||
webview | ||
widgets | ||
xml | ||
xmlpatterns | ||
.gitignore | ||
_config.yml | ||
azure-pipelines.yml | ||
go.mod | ||
go.sum | ||
LICENSE | ||
qt.go | ||
qt_android.go | ||
qt_js.go | ||
qt_notjs.go | ||
qt_wasm.go | ||
qt_wasm_112.go | ||
qt_wasm_113.go | ||
README.md |
Introduction
Qt is a free and open-source widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms with little or no change in the underlying codebase.
Go, also known as Golang, is a programming language designed at Google.
therecipe/qt allows you to write Qt applications entirely in Go, JavaScript/TypeScript, Dart/Flutter, Haxe and Swift
Beside the language bindings provided, therecipe/qt
also greatly simplifies the deployment of Qt applications to various software and hardware platforms.
At the time of writing, almost all Qt functions and classes are accessible, and you should be able to find everything you need to build fully featured Qt applications.
Impressions
Gallery of example applications.
Installation
The following instructions assume that you already installed Go and Git
(Experimental) cgo-less version (try this first, if you are new and want to test this binding)
Windows
go get -ldflags="-w" github.com/therecipe/examples/basic/widgets && for /f %v in ('go env GOPATH') do %v\bin\widgets.exe
macOS/Linux
go get -ldflags="-w" github.com/therecipe/examples/basic/widgets && $(go env GOPATH)/bin/widgets
Default version
Windows (more info)
set GO111MODULE=off
go get -v github.com/therecipe/qt/cmd/... && for /f %v in ('go env GOPATH') do %v\bin\qtsetup test && %v\bin\qtsetup -test=false
macOS (more info)
export GO111MODULE=off; xcode-select --install; go get -v github.com/therecipe/qt/cmd/... && $(go env GOPATH)/bin/qtsetup test && $(go env GOPATH)/bin/qtsetup -test=false
Linux (more info)
export GO111MODULE=off; go get -v github.com/therecipe/qt/cmd/... && $(go env GOPATH)/bin/qtsetup test && $(go env GOPATH)/bin/qtsetup -test=false
Resources
- Installation
- Getting Started
- Wiki
- Qt Documentation
- FAQ
- #qt-binding Slack channel (invite)
Deployment Targets
Target | Arch | Linkage | Docker Deployment | Host OS |
---|---|---|---|---|
Windows | 32 / 64 | dynamic / static | Yes | Any |
macOS | 64 | dynamic | Yes | Any |
Linux | arm / arm64 / 64 | dynamic / static / system | Yes | Any |
Android (+Wear) | arm / arm64 | dynamic | Yes | Any |
Android-Emulator (+Wear) | 32 | dynamic | Yes | Any |
SailfishOS | arm | system | Yes | Any |
SailfishOS-Emulator | 32 | system | Yes | Any |
Raspberry Pi (1/2/3) | arm | dynamic / system | Yes | Any |
Ubuntu Touch | arm / 64 | system | Yes | Any |
JavaScript | 32 | static | Yes | Any |
WebAssembly | 32 | static | Yes | Any |
iOS | arm64 | static | No | macOS |
iOS-Simulator | 64 | static | No | macOS |
AsteroidOS | arm | system | No | Linux |
FreeBSD | 32 / 64 | system | No | FreeBSD |
License
This package is released under LGPLv3
Qt itself is licensed and available under multiple licenses.