cutego/README.md

412 lines
17 KiB
Markdown
Raw Normal View History

2016-10-20 19:38:53 +03:00
[![GoDoc](https://godoc.org/github.com/therecipe/qt?status.svg)](https://godoc.org/github.com/therecipe/qt)
[![GoCover](http://gocover.io/_badge/github.com/therecipe/qt)](http://gocover.io/github.com/therecipe/qt)
[![GoReportCard](https://goreportcard.com/badge/github.com/therecipe/qt)](https://goreportcard.com/report/github.com/therecipe/qt)
[![TravisCI](https://travis-ci.org/therecipe/qt.svg?branch=master)](https://travis-ci.org/therecipe/qt)
[![AppveyorCI](https://ci.appveyor.com/api/projects/status/github/therecipe/qt?branch=master&svg=true)](https://ci.appveyor.com/project/therecipe/qt)
[![SemaphoreCI](https://semaphoreci.com/api/v1/therecipe/qt/branches/master/shields_badge.svg)](https://semaphoreci.com/therecipe/qt)
[![CircleCI](https://circleci.com/gh/therecipe/qt/tree/master.svg?style=svg)](https://circleci.com/gh/therecipe/qt/tree/master)
## Overview
[Qt](https://en.wikipedia.org/wiki/Qt_(software)) is a cross-platform application framework.
[Go](https://en.wikipedia.org/wiki/Go_(programming_language)) (often referred to as golang) is a free and open source programming language created at Google.
This binding aims to make it as simple as possible to write applications for all operating systems supported by Qt in Go.
The project is pretty much a WIP and not recommended to be used in production yet.
However it should already contain most open source modules and everything you need to build fully featured applications.
2016-10-20 19:38:53 +03:00
Also the Qt API is brought as unaltered as possible from C++ to Go, which makes it ideal for prototyping.
2016-10-20 19:38:53 +03:00
## Screenshots
### Windows
![](internal/screens/windows.png)
### macOS
![](internal/screens/mac.png)
### Linux
![](internal/screens/linux.png)
### Android
#### Portrait
![](internal/screens/android_portrait.png)
#### Landscape
![](internal/screens/android_landscape.png)
### iOS
2016-05-15 23:07:05 +03:00
#### Portrait
2016-05-15 23:07:05 +03:00
![](internal/screens/ios_portrait.png)
#### Landscape
2016-05-15 23:07:05 +03:00
![](internal/screens/ios_landscape.png)
### Sailfish OS
2016-06-11 02:50:53 +03:00
![](internal/screens/sailfish_portrait.png)
## Installation
2014-12-02 23:51:56 +03:00
2016-09-28 18:17:49 +03:00
**You will need at least 8gb ram to install this binding!**
2016-10-20 19:38:53 +03:00
**If you define environment variables, export them in your .profile or .bash_profile!**
* Desktop
2016-09-16 21:09:44 +03:00
* [Windows](#windows-1)
* [macOS](#macos-1)
* [Linux](#linux-1)
2014-12-02 23:51:56 +03:00
* Mobile
2016-09-16 21:09:44 +03:00
* [Android](#android-1)
* [iOS](#ios-1)
* [Sailfish OS](#sailfish-os-1)
2014-12-02 23:51:56 +03:00
* Embedded
* [Raspberry Pi](#raspberry-pi)
2014-12-02 23:51:56 +03:00
## Windows
2014-12-02 23:51:56 +03:00
1. Install Go >= 1.7.1 and setup a proper [**GOPATH**](https://golang.org/doc/code.html#GOPATH)
2014-12-02 23:51:56 +03:00
* https://golang.org/doc/install?download=go1.7.3.windows-amd64.msi
2014-12-02 23:51:56 +03:00
2. Install Qt 5.7.0; you can also define a custom location with **QT_DIR**. **Don't** de-select any default packages in Select Components screen.
2014-12-02 23:51:56 +03:00
* https://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-windows-x86-android-5.7.0.exe
2014-12-02 23:51:56 +03:00
3. Add the directory that contains **gcc** and **g++** to your **PATH**
2014-12-02 23:51:56 +03:00
* `C:\Qt\Qt5.7.0\Tools\mingw530_32\bin`
2014-12-02 23:51:56 +03:00
4. Download the binding
2015-11-09 20:23:42 +03:00
* `go get -d github.com/therecipe/qt`
2015-11-09 20:23:42 +03:00
2016-10-06 16:46:45 +03:00
5. Generate, install and test (20 min)
2014-12-02 23:51:56 +03:00
2016-09-29 20:34:56 +03:00
* `cd %GOPATH%\src\github.com\therecipe\qt && setup.bat`
6. Create your first [application](#example)
## macOS
1. Install Go >= 1.7.1 and setup a proper [**GOPATH**](https://golang.org/doc/code.html#GOPATH)
* https://golang.org/doc/install?download=go1.7.3.darwin-amd64.pkg
2. Install Qt 5.7.0
* Install the official prebuild package; you can also define a custom location with **QT_DIR**. **Don't** de-select any default packages in Select Components screen.
* without iOS https://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-mac-x64-android-5.7.0.dmg
* with iOS https://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-mac-x64-android-ios-5.7.0.dmg
or
2016-10-20 15:34:02 +03:00
* Install the Qt-dev package with Homebrew and define **QT_HOMEBREW=true** or define a custom Qt location with **QT_DIR** (usually: /usr/local/opt/qt5/); if you want to link against homebrews Qt libs **(experimental)**
* `brew install qt5`
3. Install **Xcode** >= 7.2.0; you can also define a custom location with **XCODE_DIR**
* https://itunes.apple.com/us/app/xcode/id497799835
4. Download the binding
* `go get -d github.com/therecipe/qt`
2016-10-06 16:46:45 +03:00
5. Generate, install and test (20 min)
2014-12-02 23:51:56 +03:00
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh`
2015-11-09 20:23:42 +03:00
6. Create your first [application](#example)
## Linux
1. Install Go >= 1.7.1 and setup a proper [**GOPATH**](https://golang.org/doc/code.html#GOPATH)
* https://golang.org/doc/install?download=go1.7.3.linux-amd64.tar.gz
2016-10-14 20:06:35 +03:00
2. Install Qt 5.7.0
* Install the official prebuild package; you can also define a custom location with **QT_DIR**. **Don't** de-select any default packages in Select Components screen.
2016-10-14 20:06:35 +03:00
* https://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-android-5.7.0.run
or
2016-10-20 15:34:02 +03:00
* Install the Qt-dev package with your system package manager; if you want to link against your system Qt libs **(experimental)**
2016-10-14 20:06:35 +03:00
* add **export QT_PKG_CONFIG=true** to your .profile or .bash_profile
* if needed you can also define custom locations for the misc and doc dir with **QT_MISC_DIR** and/or **QT_DOC_DIR**
* and you may want to define a custom pkg-config search path with **PKG_CONFIG_PATH**, if the default path points to old Qt pkg-config files
2016-10-13 18:14:49 +03:00
3. Install **g++** >= 5 and **OpenGL** dependencies
* Debian/Ubuntu (apt-get)
* `sudo apt-get -y install build-essential libgl1-mesa-dev`
* Fedora/RHEL/CentOS (yum)
2016-10-14 20:06:35 +03:00
* `sudo yum -y groupinstall "C Development Tools and Libraries"`
* `sudo yum -y install mesa-libGL-devel`
* openSUSE (zypper)
2016-10-14 22:25:25 +03:00
* `sudo zypper -n install -t pattern devel_basis`
4. Download the binding
* `go get -d github.com/therecipe/qt`
2016-10-06 16:46:45 +03:00
5. Generate, install and test (20 min)
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh`
6. Create your first [application](#example)
2014-12-02 23:51:56 +03:00
2016-06-11 02:50:53 +03:00
## Android
2014-12-02 23:51:56 +03:00
1. Install the desktop version for [Windows](#windows-1), [macOS](#macos-1) or [Linux](#linux-1)
2014-12-02 23:51:56 +03:00
2016-10-06 16:46:45 +03:00
2. Unzip the Android SDK in `C:\` or `$HOME`; you can also define a custom location with **ANDROID_SDK_DIR**
* https://dl.google.com/android/android-sdk_r24.4.1-windows.zip
* https://dl.google.com/android/android-sdk_r24.4.1-macosx.zip
* https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
2014-12-02 23:51:56 +03:00
2016-10-06 16:46:45 +03:00
3. Install the SDK dependencies with `C:\android-sdk-windows\tools\android.bat` or `$HOME/android-sdk-{ macosx | linux }/tools/android`
2015-11-09 20:23:42 +03:00
* Tools
2016-10-20 15:34:02 +03:00
* Android SDK Build-tools (25.0.0)
* Android 7.1.1 (API 25)
2015-11-09 20:23:42 +03:00
* SDK Platform
2015-11-12 03:29:32 +03:00
* Extras (Windows only)
* Google USB Driver
2014-12-02 23:51:56 +03:00
2016-10-06 16:46:45 +03:00
4. Unzip the Android NDK in `C:\` or `$HOME`; you can also define a custom location with **ANDROID_NDK_DIR**
* https://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zip
* https://dl.google.com/android/repository/android-ndk-r12b-darwin-x86_64.zip
* https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
2014-12-02 23:51:56 +03:00
2016-10-13 18:14:49 +03:00
5. Install Java SE Development Kit >= 8 (Linux: install in `$HOME/jdk/`); you can also define a custom location with **JDK_DIR**
* https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2014-12-02 23:51:56 +03:00
2016-10-06 16:46:45 +03:00
6. Install and test (20 min)
2014-12-02 23:51:56 +03:00
2016-09-29 20:34:56 +03:00
* `cd %GOPATH%\src\github.com\therecipe\qt && setup.bat android`
2014-12-02 23:51:56 +03:00
or
2014-12-02 23:51:56 +03:00
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh android`
7. Create your first [application](#example)
2016-06-11 02:50:53 +03:00
## iOS
2016-05-15 23:07:05 +03:00
2016-09-16 21:09:44 +03:00
1. Install the desktop version for [macOS](#macos-1)
2016-05-15 23:07:05 +03:00
2016-10-06 16:46:45 +03:00
2. Install and test (20 min)
2016-05-15 23:07:05 +03:00
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh ios && ./setup.sh ios-simulator`
2016-05-15 23:07:05 +03:00
3. Create your first [application](#example)
2016-05-15 23:07:05 +03:00
2016-06-11 02:50:53 +03:00
## Sailfish OS
1. Install the desktop version for [Windows](#windows-1), [macOS](#macos-1) or [Linux](#linux-1)
2016-06-11 02:50:53 +03:00
2. Install VirtualBox; you can also define a custom location with **VIRTUALBOX_DIR**
* http://download.virtualbox.org/virtualbox/5.1.8/VirtualBox-5.1.8-111374-Win.exe
* http://download.virtualbox.org/virtualbox/5.1.8/VirtualBox-5.1.8-111374-OSX.dmg
* http://download.virtualbox.org/virtualbox/5.1.8/VirtualBox-5.1.8-111374-Linux_amd64.run
2016-06-11 02:50:53 +03:00
3. Install the Sailfish OS SDK; you can also define a custom location with **SAILFISH_DIR**
* https://releases.sailfishos.org/sdk/installers/1608/SailfishOSSDK-Beta-1608-Qt5-windows-offline.exe
* https://releases.sailfishos.org/sdk/installers/1608/SailfishOSSDK-Beta-1608-Qt5-mac-offline.dmg
* https://releases.sailfishos.org/sdk/installers/1608/SailfishOSSDK-Beta-1608-Qt5-linux-64-offline.run
2016-06-11 02:50:53 +03:00
2016-10-06 16:46:45 +03:00
4. Install and test (20 min)
2016-06-11 02:50:53 +03:00
2016-09-29 20:34:56 +03:00
* `cd %GOPATH%\src\github.com\therecipe\qt && setup.bat sailfish && setup.bat sailfish-emulator`
or
2016-06-11 02:50:53 +03:00
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh sailfish && ./setup.sh sailfish-emulator`
2016-06-11 02:50:53 +03:00
5. Create your first [application](#example)
2016-06-11 02:50:53 +03:00
## Raspberry Pi
2016-09-16 21:09:44 +03:00
1. Install the desktop version for [Linux](#linux-1)
2016-10-06 16:46:45 +03:00
2. Create a folder `$HOME/raspi`
2016-10-06 16:46:45 +03:00
* `mkdir $HOME/raspi`
2016-10-13 18:14:49 +03:00
3. Download and unpack the Qt source
2015-11-19 21:29:30 +03:00
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi && wget https://download.qt.io/official_releases/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.gz`
* `tar -xzf qt-everywhere-opensource-src-5.7.0.tar.gz qt-everywhere-opensource-src-5.7.0`
4. Patch Qt Source
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi/qt-everywhere-opensource-src-5.7.0/qtbase && sed -i 's/c++1z/c++11/' ./mkspecs/devices/linux-rpi3-g++/qmake.conf`
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi/qt-everywhere-opensource-src-5.7.0/qtwayland && wget https://github.com/qtproject/qtwayland/commit/75294be3.patch && patch -p1 -i 75294be3.patch`
5. Download the cross compiler; you can also define a custom location with **RPI_TOOLS_DIR**
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi && git clone --depth 1 https://github.com/raspberrypi/tools.git`
6. Get dependencies and install Arch Linux on your SD card
* `sudo apt-get -y install bsdtar libwayland-dev flex bison gperf python`
* Raspberry Pi 1
* https://archlinuxarm.org/platforms/armv6/raspberry-pi
2016-09-18 22:55:19 +03:00
* Raspberry Pi 2
* https://archlinuxarm.org/platforms/armv7/broadcom/raspberry-pi-2
2016-09-18 22:55:19 +03:00
* Raspberry Pi 3
* https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3
7. Start your Raspberry Pi
8. Enable root login over ssh
* `export RASPI_IP=192.168.XXX.XXX` (replace XXX.XXX with the valid ip ending)
* `ssh alarm@$RASPI_IP` (password: alarm)
* `su` (password: root)
* `sed -i 's/#PermitRootLogin/PermitRootLogin/' /etc/ssh/sshd_config && sed -i 's/prohibit-password/yes/' /etc/ssh/sshd_config && systemctl restart sshd.service`
2016-10-06 16:46:45 +03:00
9. Update and install dependencies (5 min)
* `pacman -Syyu`
* `pacman -S fontconfig icu libinput libjpeg-turbo libproxy libsm libxi libxkbcommon-x11 libxrender tslib xcb-util-image xcb-util-keysyms xcb-util-wm freetds gtk3 libfbclient libmariadbclient mtdev postgresql-libs unixodbc assimp bluez-libs sdl2 jasper libmng libwebp gst-plugins-base-libs libpulse openal gst-plugins-bad hunspell libxcomposite wayland gst-plugins-base libxslt gst-plugins-good ffmpeg jsoncpp libevent libsrtp libvpx libxcursor libxrandr libxss libxtst nss opus protobuf snappy xcb-util xcb-util-cursor xcb-util-renderutil xcb-util-xrm libxfixes libxshmfence libxext libx11 libxcb libice weston ttf-freefont lxde gamin xorg-server xorg-xinit xorg-server-utils mesa xf86-video-fbdev xf86-video-vesa xorg-server-xwayland xf86-input-libinput gst-plugins-ugly sqlite2 cups xorg-server-devel rsync`
* `pacman -Scc`
* Raspberry Pi 1
* `sed -i 's/gpu_mem=64/gpu_mem=128/' /boot/config.txt`
2016-10-06 16:46:45 +03:00
* `echo "exec startlxde" >> $HOME/.xinitrc && mkdir $HOME/.config/ && echo -e "[core]\nbackend=fbdev-backend.so\nmodules=xwayland.so" >> $HOME/.config/weston.ini`
* `echo "dtoverlay=vc4-kms-v3d,cma-128" >> /boot/config.txt && sed -i 's/fbdev-backend/drm-backend/' $HOME/.config/weston.ini` (**experimental**: enable OpenGL under X; will break most applications)
* Raspberry Pi 2 or 3
* `sed -i 's/gpu_mem=64/gpu_mem=256/' /boot/config.txt`
2016-10-06 16:46:45 +03:00
* `echo "exec startlxde" >> $HOME/.xinitrc && mkdir $HOME/.config/ && echo -e "[core]\nbackend=fbdev-backend.so\nmodules=xwayland.so" >> $HOME/.config/weston.ini`
* `echo "dtoverlay=vc4-kms-v3d,cma-256" >> /boot/config.txt && sed -i 's/fbdev-backend/drm-backend/' $HOME/.config/weston.ini` (**experimental**: enable OpenGL under X; will break most applications)
* `reboot`
2016-10-06 16:46:45 +03:00
10. Get sysroot for cross compiling (password: root) (5 min)
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi && mkdir sysroot sysroot/usr sysroot/opt`
* `rsync -avz root@$RASPI_IP:/lib sysroot --delete`
* `rsync -avz root@$RASPI_IP:/usr/include sysroot/usr --delete`
* `rsync -avz root@$RASPI_IP:/usr/lib sysroot/usr --delete`
* `rsync -avz root@$RASPI_IP:/opt/vc sysroot/opt --delete`
11. Prepare sysroot; you can also define a custom location with **RPI1_SYSROOT_DIR**, **RPI2_SYSROOT_DIR** or **RPI3_SYSROOT_DIR**
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi && wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py`
* `chmod +x sysroot-relativelinks.py && ./sysroot-relativelinks.py sysroot`
2016-10-06 16:46:45 +03:00
12. Build Qt (2 h)
2016-10-06 16:46:45 +03:00
* `cd $HOME/raspi/qt-everywhere-opensource-src-5.7.0`
* Raspberry Pi 1
2016-10-06 16:46:45 +03:00
* `./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=$HOME/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot $HOME/raspi/sysroot -opensource -confirm-license -make libs -skip webengine -nomake tools -nomake examples -extprefix /usr/local/Qt5.7.0/5.7/rpi1 -I $HOME/raspi/sysroot/opt/vc/include -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I $HOME/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -silent`
2016-09-18 22:55:19 +03:00
* Raspberry Pi 2
2016-10-06 16:46:45 +03:00
* `./configure -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=$HOME/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot $HOME/raspi/sysroot -opensource -confirm-license -make libs -skip webengine -nomake tools -nomake examples -extprefix /usr/local/Qt5.7.0/5.7/rpi2 -I $HOME/raspi/sysroot/opt/vc/include -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I $HOME/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -silent`
2016-09-18 22:55:19 +03:00
* Raspberry Pi 3
2016-10-06 16:46:45 +03:00
* `./configure -opengl es2 -device linux-rpi3-g++ -device-option CROSS_COMPILE=$HOME/raspi/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot $HOME/raspi/sysroot -opensource -confirm-license -make libs -skip webengine -nomake tools -nomake examples -extprefix /usr/local/Qt5.7.0/5.7/rpi3 -I $HOME/raspi/sysroot/opt/vc/include -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos -I $HOME/raspi/sysroot/opt/vc/include/interface/vcos/pthreads -I $HOME/raspi/sysroot/opt/vc/include/interface/vmcs_host/linux -silent`
* `make -k -i && sudo make -k -i install`
13. Prepare the Qt directory
2016-10-06 16:46:45 +03:00
* `sudo chown -R $USER $HOME/Qt5.7.0/`
2016-10-06 16:46:45 +03:00
14. Install and test the binding (20 min)
* Raspberry Pi 1
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh rpi1`
2016-09-18 22:55:19 +03:00
* Raspberry Pi 2
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh rpi2`
2016-09-18 22:55:19 +03:00
* Raspberry Pi 3
* `cd $GOPATH/src/github.com/therecipe/qt && ./setup.sh rpi3`
15. Notes
* run `startx &` before starting an application with `-platform xcb` (qml/quick applications won't work; they may work with Qt 5.8)
* run `weston &` or `weston --tty=1 &` (via ssh) or create your own [compositor](https://doc.qt.io/qt-5/qtwaylandcompositor-index.html) before starting an application with `-platform wayland-egl` (qml/quick applications won't work; they may work with Qt 5.8)
* you can increase the available gpu memory by editing `/boot/config.txt`
16. Create your first [application](#example)
## Example
1. Create a project folder `[GOPATH]/src/qtExample`
2015-11-19 21:29:30 +03:00
2. Create a file `[GOPATH]/src/qtExample/main.go`
```go
package main
import (
2015-12-18 21:03:39 +03:00
"os"
2015-11-19 21:29:30 +03:00
"github.com/therecipe/qt/core"
2015-12-18 21:03:39 +03:00
"github.com/therecipe/qt/widgets"
)
func main() {
2015-12-18 21:03:39 +03:00
widgets.NewQApplication(len(os.Args), os.Args)
2015-11-19 21:29:30 +03:00
//create a button and connect the clicked signal
var button = widgets.NewQPushButton2("Click me!", nil)
button.ConnectClicked(func(flag bool) {
widgets.QMessageBox_Information(nil, "OK", "You clicked me!", widgets.QMessageBox__Ok, widgets.QMessageBox__Ok)
2015-12-18 21:03:39 +03:00
})
2015-11-19 21:29:30 +03:00
//create a layout and add the button
var layout = widgets.NewQVBoxLayout()
layout.AddWidget(button, 0, core.Qt__AlignCenter)
//create a window, add the layout and show the window
2015-12-18 21:03:39 +03:00
var window = widgets.NewQMainWindow(nil, 0)
window.SetWindowTitle("Hello World Example")
window.SetMinimumSize2(200, 200)
window.Layout().DestroyQObject()
window.SetLayout(layout)
2015-12-18 21:03:39 +03:00
window.Show()
2015-11-19 21:29:30 +03:00
2015-12-18 21:03:39 +03:00
widgets.QApplication_Exec()
}
```
3. Open the { command-line | terminal | shell } in `[GOPATH]/src/qtExample` and run `qtdeploy build desktop`
2015-11-19 21:29:30 +03:00
4. You will find the application in `[GOPATH]/src/qtExample/deploy/[GOOS]_minimal/qtExample`
5. Take a look at the [examples](https://github.com/therecipe/qt/tree/master/internal/examples)
6. Make yourself familiar with the [Qt documentation](https://doc.qt.io/qt-5/classes.html)
7. Join our Slack Channel [#qt-binding](https://gophers.slack.com/messages/qt-binding/details/)