当前位置:   article > 正文

使用Go语言开发Qt界面_go qt

go qt

Go 的 UI 库

Go 语言本身是没有 UI 库的,不过有许多第三方的库支持将 Go 语言绑定到其他 UI 库,比如 Qt、GTK。参考地址

环境搭建

非 windows 或者需要参数说明的可以参考官方的wikiwindows 安装

Qt 安装

下载你需要的版本,下载地址

therecipe/qt 安装

终端执行下面的命令:

# Go的环境变量配置,配置过一次就不用在设置了
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn

# 下载therecipe/qt库
go get -v -tags=no_env github.com/therecipe/qt/cmd/...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行 qtsetup

下载好库后会在%GOPATH%/bin目录下出现几个帮助执行绑定工作的可执行文件
在这里插入图片描述
现在还需要根据你本地的 Qt 再配置下编译环境,就是执行上面目录中的 qtsetup,但是直接执行是会有问题的:
在这里插入图片描述
Go-Use-Qt-2020-04-19-20-23-26
需要配置几个环境变量,qtsetup只需要执行一次。如果你有多个环境要切换,需要注意和编译时的环境变量保持一致,可以用 bat 临时设置下环境变量方便切换,下面就是 bat 的内容:

SET PATH=%PATH%;%GOPATH%\bin;

REM 配置Qt目录和Qt版本
SET QT_DIR=C:\Qt\Qt5.12.5
SET QT_VERSION_MAJOR=5.12.5

REM 编译32位程序,前提是你的Qt有Mingw32套件
SET GOARCH=386

REM 默认使用Mingw编译,使用MSVC编译的话开启下面的选项,qtsetup可以运行,但是后面qtdeploy会报cgo相关错误
REM SET QT_MSVC=true
REM SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build;
REM call vcvarsall.bat amd64_x86

REM 语言绑定安装,只需执行一次
qtsetup.exe
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

示例demo

创建一个 Go 项目目录

终端运行:

mkdir qtwidget && cd qtwidget
go mod init
  • 1
  • 2

main.go

在项目目录新建一个 main.go 文件,复制下面的内容:

package main

import (
    "os"

    "github.com/therecipe/qt/widgets"
)

func main() {

    // needs to be called once before you can start using the QWidgets
    app := widgets.NewQApplication(len(os.Args), os.Args)

    // create a window
    // with a minimum size of 250*200
    // and sets the title to "Hello Widgets Example"
    window := widgets.NewQMainWindow(nil, 0)
    window.SetMinimumSize2(250, 200)
    window.SetWindowTitle("Hello Widgets Example")

    // create a regular widget
    // give it a QVBoxLayout
    // and make it the central widget of the window
    widget := widgets.NewQWidget(nil, 0)
    widget.SetLayout(widgets.NewQVBoxLayout())
    window.SetCentralWidget(widget)

    // create a line edit
    // with a custom placeholder text
    // and add it to the central widgets layout
    input := widgets.NewQLineEdit(nil)
    input.SetPlaceholderText("Write something ...")
    widget.Layout().AddWidget(input)

    // create a button
    // connect the clicked signal
    // and add it to the central widgets layout
    button := widgets.NewQPushButton2("and click me!", nil)
    button.ConnectClicked(func(bool) {
        widgets.QMessageBox_Information(nil, "OK", input.Text(), widgets.QMessageBox__Ok, widgets.QMessageBox__Ok)
    })
    widget.Layout().AddWidget(button)

    // make the window visible
    window.Show()

    // start the main Qt event loop
    // and block until app.Exit() is called
    // or the window is closed by the user
    app.Exec()
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

编译

编译就是执行 qtdeploy 命令,具体参数可以自己运行 qtdeploy -h 查看,这个终端文件也是在%GOPATH%/bin的,如果你的编译环境有多个也可以用 bat 配置下,与上面的类似,新建个 build.bat 拷贝下面的内容并运行:

SET PATH=%PATH%;%GOPATH%\bin;

REM 配置Qt目录和Qt版本
SET QT_DIR=C:\Qt\Qt5.12.5
SET QT_VERSION_MAJOR=5.12.5

REM 编译32位程序
SET GOARCH=386

REM 默认使用Mingw编译,使用MSVC编译的话开启下面的选项,qtsetup可以运行,但是后面qtdeploy会报cgo相关错误
REM SET QT_MSVC=true
REM SET PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build;
REM call vcvarsall.bat amd64_x86

REM 语言绑定安装,只需执行一次
REM qtsetup.exe

REM 编译具体项目时运行
qtdeploy build desktop ./
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

生成的可执行文件在当前目录/deploy/windows,本体 exe 和相关的 dll 都在这个目录下

在这里插入图片描述
注:我使用 Mingw 编译成功,但是 MSVC 编译会有 cgo 的错误。

main.go:6:2: G:\Go\src\go_learn\qtwidget\vendor\github.com\therecipe\qt\widgets\minimal_cgo_windows_windows_386.go: invalid #cgo verb: #cgo MSCFLAGS: -nologo -Zc:wchar_t -FS -Zc:strictStrings -O2 -MD -W3 -w44456 -w44457 -w44458 -D_ALLOW_KEYWORD_MACROS -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG
  • 1

运行结果

demo 执行效果如下:

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/329982
推荐阅读
相关标签
  

闽ICP备14008679号