explaingit

therecipe/qt

10,785GoAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

Go language bindings for the Qt graphical toolkit, letting Go developers build native desktop and mobile apps with windows, buttons, and menus across multiple platforms without writing any C++.

Mindmap

mindmap
  root((repo))
    What It Does
      Qt bindings for Go
      Build GUI apps in Go
      Cross-platform deploy
    Languages Supported
      Go
      JS TypeScript Dart
      Haxe Swift
    Target Platforms
      Windows macOS Linux
      Android iOS
      Raspberry Pi
      WebAssembly
    Setup
      Go and Git required
      Docker-based builds
      Experimental lite mode
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a native desktop app with a real graphical interface using Go instead of switching to C++.

USE CASE 2

Deploy the same Go GUI app to Windows, macOS, and Linux from one codebase using Docker-based build tooling.

USE CASE 3

Create a mobile app for Android or iOS in Go without learning Swift, Kotlin, or Java.

USE CASE 4

Compile a Go desktop app to WebAssembly so it runs in a browser without rewriting the application code.

Tech stack

GoQtC++Docker

Getting it running

Difficulty · hard Time to first run · 1h+

Qt itself must be installed separately and cross-compilation requires Docker, an experimental mode with fewer dependencies is available for a quicker first look.

LGPLv3, you can use this library in your own app including commercially, as long as users can swap out the library itself, if you modify the library you must share those changes under the same license.

In plain English

Qt is a well-established toolkit for building desktop and mobile applications with graphical interfaces. It has been used for decades to create apps that look and behave consistently across Windows, macOS, Linux, Android, iOS, and more. Normally, you write Qt applications in C++. This project adds a bridge so that Go programmers can build Qt applications without leaving Go. The binding exposes nearly all of Qt's classes and functions to Go code, meaning a Go developer can create windows, buttons, menus, dialogs, and other standard interface elements using the same language they use for the rest of their program. The project also supports writing Qt apps in JavaScript, TypeScript, Dart, Haxe, and Swift, not just Go, through companion packages. One of the stated goals is to simplify deployment. Getting a Qt application running on multiple platforms is normally a tedious setup process. This package includes tooling and Docker-based workflows to build and package your app for many different targets, including Raspberry Pi, Android, WebAssembly (for running in a browser), Ubuntu Touch, and AsteroidOS, in addition to the standard desktop platforms. Installation requires that you already have Go and Git set up, then a few commands fetch and configure the binding. The README notes an experimental mode with fewer dependencies for people who want a quick first look. The package is licensed under LGPLv3. Qt itself has its own separate licensing. This project is aimed at Go developers who want to build native desktop or mobile applications with a graphical interface and would prefer not to write C++ to do it.

Copy-paste prompts

Prompt 1
I want to build a file-browser desktop app using therecipe/qt with Go. Show me the minimal code to create a window with a list widget that displays files from a folder the user selects.
Prompt 2
Help me set up the therecipe/qt Docker-based workflow to cross-compile my Go Qt app for both Windows and Linux from my macOS machine, including the exact Docker commands to run.
Prompt 3
I have a working therecipe/qt desktop app and want to package it for Android. Walk me through the build command, required Android SDK setup, and how to produce a signed APK.
Prompt 4
Explain how signal and slot event handling works in therecipe/qt, specifically how I connect a button click signal to a Go function that opens a file picker dialog.
Prompt 5
I want to try therecipe/qt without the full Qt installation first. Explain the experimental lightweight mode and what limitations it has compared to the full binding.
Open on GitHub → Explain another repo

← therecipe on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.