離線版QT地址: https://download.qt.io/official_releases/qt/5.11/5.11.1/qt-opensource-windows-x86-5.11.1.exejava
注意:android
最好所有安裝,不然在後續的安裝過程當中會提示相應的文件找不到git
默認的QT_DIR爲C:\Qtgithub
若是不指定QT_DIR,在後續安裝過程當中會出現以下錯誤golang
C:\Qt\Qt5.11.1\Tools\mingw530_32\bin C:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin C:\Qt\Qt5.11.1\Tools\mingw530_32\opt\bin
C:\Qt\Qt5.11.1\Tools\mingw530_32\bin 目錄下包含了gcc、g++等編譯連接工具
C:\Qt\Qt5.11.1\5.11.1\mingw53_32\bin 目錄下包含了qmake.exe以及程序運行過程當中須要的動態連接庫(.dll)文件
下載地址: https://golang.org/dl/web
# 下載 go get -v github.com/therecipe/qt/cmd/... # 安裝 %GOPATH%\bin\qtsetup.exe
安裝過程當中出現的硬連接失敗能夠忽略sql
生成的靜態庫所在路徑爲: %GOPATH%\pkg\windows_386\github.com\therecipe\qtdocker
總共預計安裝39個靜態庫文件(後綴名爲.a)。其中安裝成功38個,安裝失敗1個(winextras)。windows
安裝記錄以下:websocket
F:\>qtsetup [36mINFO[0m[0000] running: 'qtsetup prep' [31mERRO[0m[0000] failed to run command [31mcmd[0m="cmd /C mklink /H C:\\Go\\bin\\qtrcc.exe F:\\Workspace\\go\\bin\\qtrcc.exe" [31mdir[0m= [31menv[0m= [31merror[0m="exit status 1" [31mfunc[0m=RunCmdOptional [31mname[0m="failed to create qtrcc symlink in your PATH (C:\\Go\\bin\\qtrcc.exe); please use F:\\Workspace\\go\\bin\\qtrcc.exe instead" ϵͳ�����ļ��Ƶ���ͬ�Ĵ����������� [31mERRO[0m[0000] failed to run command [31mcmd[0m="cmd /C mklink /H C:\\Go\\bin\\qtmoc.exe F:\\Workspace\\go\\bin\\qtmoc.exe" [31mdir[0m= [31menv[0m= [31merror[0m="exit status 1" [31mfunc[0m=RunCmdOptional [31mname[0m="failed to create qtmoc symlink in your PATH (C:\\Go\\bin\\qtmoc.exe); please use F:\\Workspace\\go\\bin\\qtmoc.exe instead" ϵͳ�����ļ��Ƶ���ͬ�Ĵ����������� [31mERRO[0m[0000] failed to run command [31mcmd[0m="cmd /C mklink /H C:\\Go\\bin\\qtminimal.exe F:\\Workspace\\go\\bin\\qtminimal.exe" [31mdir[0m= [31menv[0m= [31merror[0m="exit status 1" [31mfunc[0m=RunCmdOptional [31mname[0m="failed to create qtminimal symlink in your PATH (C:\\Go\\bin\\qtminimal.exe); please use F:\\Workspace\\go\\bin\\qtminimal.exe instead" ϵͳ�����ļ��Ƶ���ͬ�Ĵ����������� [31mERRO[0m[0000] failed to run command [31mcmd[0m="cmd /C mklink /H C:\\Go\\bin\\qtdeploy.exe F:\\Workspace\\go\\bin\\qtdeploy.exe" [31mdir[0m= [31menv[0m= [31merror[0m="exit status 1" [31mfunc[0m=RunCmdOptional [31mname[0m="failed to create qtdeploy symlink in your PATH (C:\\Go\\bin\\qtdeploy.exe); please use F:\\Workspace\\go\\bin\\qtdeploy.exe instead" ϵͳ�����ļ��Ƶ���ͬ�Ĵ����������� [36mINFO[0m[0000] running: 'qtsetup check windows' [docker=false] [vagrant=false] [36mINFO[0m[0000] GOOS: 'windows' [36mINFO[0m[0000] GOARCH: 'amd64' [36mINFO[0m[0000] GOVERSION: 'go1.10.1' [36mINFO[0m[0000] GOROOT: * 'C:\Go\' [36mINFO[0m[0000] GOPATH: * 'F:\Workspace\go' [36mINFO[0m[0000] GOBIN: 'F:\Workspace\go\bin' [36mINFO[0m[0000] QT_HASH: 'd0f30a6e4c39e0989b1b00169b66abbca442becf' [36mINFO[0m[0000] QT_VERSION: '5.11.1' [36mINFO[0m[0000] QT_VERSION_MAJOR: '5.11.1' [36mINFO[0m[0000] QT_DIR: * 'C:\Qt\Qt5.11.1' [36mINFO[0m[0000] QT_STUB: 'false' [36mINFO[0m[0000] QT_DEBUG: 'false' [36mINFO[0m[0000] QT_QMAKE_DIR: '' [36mINFO[0m[0000] QT_WEBKIT: 'false' [36mINFO[0m[0000] QT_MSYS2: 'false' [36mINFO[0m[0000] running: 'qtsetup generate windows' [docker=false] [vagrant=false] [36mINFO[0m[0006] generating full qt/core [36mINFO[0m[0013] generating full qt/androidextras [36mINFO[0m[0013] generating full qt/gui [36mINFO[0m[0036] generating full qt/network [36mINFO[0m[0039] generating full qt/xml [36mINFO[0m[0041] generating full qt/dbus [36mINFO[0m[0043] generating full qt/nfc [36mINFO[0m[0044] generating full qt/script [36mINFO[0m[0046] generating full qt/sensors [36mINFO[0m[0049] generating full qt/positioning [36mINFO[0m[0050] generating full qt/widgets [36mINFO[0m[0071] generating full qt/sql [36mINFO[0m[0073] generating full qt/qml [36mINFO[0m[0075] generating full qt/websockets [36mINFO[0m[0076] generating full qt/xmlpatterns [36mINFO[0m[0078] generating full qt/bluetooth [36mINFO[0m[0080] generating full qt/webchannel [36mINFO[0m[0081] generating full qt/svg [36mINFO[0m[0083] generating full qt/multimedia [36mINFO[0m[0089] generating full qt/quick [36mINFO[0m[0092] generating full qt/help [36mINFO[0m[0095] generating full qt/location [36mINFO[0m[0096] generating full qt/scripttools [36mINFO[0m[0097] generating full qt/uitools [36mINFO[0m[0099] generating full qt/winextras [36mINFO[0m[0100] generating full qt/testlib [36mINFO[0m[0101] generating full qt/serialport [36mINFO[0m[0102] generating full qt/serialbus [36mINFO[0m[0104] generating full qt/printsupport [36mINFO[0m[0106] generating full qt/designer [36mINFO[0m[0110] generating full qt/scxml [36mINFO[0m[0112] generating full qt/gamepad [36mINFO[0m[0113] generating full qt/purchasing [36mINFO[0m[0114] generating full qt/datavisualization [36mINFO[0m[0117] generating full qt/charts [36mINFO[0m[0122] generating full qt/speech [36mINFO[0m[0123] generating full qt/quickcontrols2 [36mINFO[0m[0124] generating full qt/sailfish [36mINFO[0m[0124] generating full qt/remoteobjects [36mINFO[0m[0125] running: 'qtsetup install windows' [docker=false] [vagrant=false] [36mINFO[0m[0125] installing full qt/core [36mINFO[0m[0126] installing full qt/androidextras [36mINFO[0m[0127] installing full qt/gui [36mINFO[0m[0128] installing full qt/network [36mINFO[0m[0128] installing full qt/xml [36mINFO[0m[0129] installing full qt/dbus [36mINFO[0m[0130] installing full qt/nfc [36mINFO[0m[0131] installing full qt/script [36mINFO[0m[0131] installing full qt/sensors [36mINFO[0m[0132] installing full qt/positioning [36mINFO[0m[0133] installing full qt/widgets [36mINFO[0m[0134] installing full qt/sql [36mINFO[0m[0135] installing full qt/qml [36mINFO[0m[0136] installing full qt/websockets [36mINFO[0m[0136] installing full qt/xmlpatterns [36mINFO[0m[0137] installing full qt/bluetooth [36mINFO[0m[0138] installing full qt/webchannel [36mINFO[0m[0138] installing full qt/svg [36mINFO[0m[0139] installing full qt/multimedia [36mINFO[0m[0140] installing full qt/quick [36mINFO[0m[0141] installing full qt/help [36mINFO[0m[0141] installing full qt/location [36mINFO[0m[0142] installing full qt/scripttools [36mINFO[0m[0143] installing full qt/uitools [36mINFO[0m[0144] installing full qt/winextras github.com/therecipe/qt github.com/therecipe/qt/winextras # github.com/therecipe/qt/winextras [36mINFO[0m[0151] installing full qt/testlib [36mINFO[0m[0152] installing full qt/serialport [36mINFO[0m[0152] installing full qt/serialbus [36mINFO[0m[0153] installing full qt/printsupport [36mINFO[0m[0154] installing full qt/designer [36mINFO[0m[0155] installing full qt/scxml [36mINFO[0m[0155] installing full qt/gamepad [36mINFO[0m[0156] installing full qt/purchasing [36mINFO[0m[0157] installing full qt/datavisualization [36mINFO[0m[0157] installing full qt/charts [36mINFO[0m[0158] installing full qt/speech [36mINFO[0m[0159] installing full qt/quickcontrols2 [36mINFO[0m[0160] installing full qt/sailfish [36mINFO[0m[0160] installing full qt/remoteobjects [33mWARN[0m[0161] failed to install: [33mWARN[0m[0161] winextras [36mINFO [0m[0953] running: 'qtsetup test windows' [docker=false] [vagrant=false] [36mINFO [0m[0953] testing widgets\line_edits [36mINFO [0m[1008] testing widgets\pixel_editor [36mINFO [0m[1054] testing widgets\textedit [36mINFO [0m[1225] testing qml\application [36mINFO [0m[1272] testing qml\drawer_nav_x [36mINFO [0m[1334] testing qml\gallery [36mINFO [0m[1384] testing quick\calc
運行的測試代碼所在目錄源碼目錄(therecipe\qt)下的的internal\examples目錄下。
6. 簡單的程序
目錄結構:
代碼:
package main import ( "os" "github.com/therecipe/qt/widgets" "github.com/therecipe/qt/gui" "github.com/therecipe/qt/core" ) func main() { // 建立應用程序 app := widgets.NewQApplication(len(os.Args), os.Args) // 建立主窗口 window := widgets.NewQWidget(nil, 0) // 設置窗口最小尺寸 window.SetMinimumSize2(400, 200) // 設置標題 window.SetWindowTitle("hello QT, hello GO") mainLayout := widgets.NewQVBoxLayout() // 建立垂直佈局 window.SetLayout(mainLayout) lineEidt := widgets.NewQLineEdit(nil) //建立一個label,用於存放go logo icon := gui.NewQPixmap5("go.jpg", "", core.Qt__AutoColor) iconLabel := widgets.NewQLabel(nil, 0) iconLabel.SetPixmap(icon) btn := widgets.NewQPushButton2("點我", nil) btn.ConnectClicked(func(bool) { widgets.QMessageBox_Information(nil, "我是對話框", "hello go,hello qt", widgets.QMessageBox__Ok, widgets.QMessageBox__Ok) }) // !!!! 注意是AddWidget 不是AddChildWidget mainLayout.AddWidget(lineEidt, 0, 0) mainLayout.AddWidget(iconLabel, 0, 0) window.Layout().AddWidget(btn) // 顯示窗口 window.Show() // 進入消息循環 app.Exec() }
生成目標exe文件
F:\Workspace\go\src\gui\qt>qtdeploy build desktop hello
須要將go.jpg拷貝至hello\deploy\windows\目錄下(與hello.exe處於一個目錄下)方可正常運行。
運行效果:
1) "xxx/src/github.com/therecipe/qt/gui" has no buildable Go source files
解決方法:
點擊 Help > Edit Custom Properties
#添加以下內容 idea.max.intellisense.filesize=99999
因爲靜態庫gui.a很大,所以須要提升goland智能補全所容許的 單個文件大小上限
2) 運行時內存不足
解決方法:
點擊Goland 的開始菜單 Help > Edit Custom VM Options
根據配置 修改-Xmx選項,例如:
-Xms512m -Xmx4096m -XX:ReservedCodeCacheSize=480m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow
-Xmx value limits the maximum heap memory size that the JVM can allocate.
https://github.com/therecipe/qt/wiki/Getting-Started
https://github.com/therecipe/qt/wiki/Installation-on-Windows