Qt开发之Go篇(三)

使用Designer

上一节我们手撸了一个Hello World,然而对于稍微复杂一些的界面,手撸就实在太没有效率了。Designer才是GUI设计的神器。therecipe/qt集成了uic工具,可以方便地将Designer生成的ui文件转换成go文件(其实有的地方也不很方便,之后会提到)。

绘制界面

打开Designer,新建一个窗口,随便拖几个小部件上去,还是以Hello World为例,如下图:

为了简单考虑,objectName就不改了,都按照默认的来,窗口是Dialog,按钮是pushButton。在工程目录下新建一个ui文件夹,将窗口保存为window.ui。

在ui文件夹下新建一个window.go(叫什么名无所谓),就一句话,package ui。修改hello_world.go,改为:

package main
 
import (
 "main/ui"
 "os"
 
 "github.com/therecipe/qt/widgets"
)
 
func main() {
    widgets.NewQApplication(len(os.Args), os.Args)
    window := ui.NewDialog(nil)
    window.Show()
    widgets.QApplication_Exec()
}

执行qtdeploy build desktop hello_world.go,编译完成后,运行deploy\windows\hello_world.exe

复盘

我们已经完成了两个demo了,可以注意到,由于Go语言的特性,对于Qt的接口存在一些改动。比如所有的接口函数的首字母都大写了,这是因为在Go语言中,只有首字母大写的函数才会被外部访问到。某些函数的后边增加了数字,这是因为Go语言没有泛型,因此不同参数的函数必须通过函数名进行区分。这就体现出了VSCode的重要性了,当你不清楚一个函数后边的尾缀时,可以按Ctrl+空格进行代码补全,此时可以查看函数的名称和参数类型。

言归正传,让我们看看qtdeploy都做了什么。当执行完qtdeploy之后,在ui目录下会生成一个uic_window.go的文件,这个文件就是根据ui文件自动生成的go文件。

通常来讲,这个文件不应该手动修改,因为每次运行qtdeploy之后文件内容都会被还原。

可以看到,在这个文件中定义了一个名为NewDialog的函数,它的作用就是创立一个窗口,也就是对应hello_world.go的第12行。

我们在上一步的时候新建了window.go,其目的是定义了ui包,否则在hello_world.go里边找不到ui包,qtdeploy会直接报错,跑不到uic的这一步。

连接信号和槽

Qt是一个事件驱动的GUI库,当用户执行某些操作的时候会产生信号(signal),如果将信号和一个槽(slot)连接起来,那么当信号触发时,就会调用相应的槽函数。让我们尝试将按钮的clicked信号和窗口的close槽连接起来,实现按按钮退出窗口的功能。

在therecipe/qt中,连接信号和槽的方法与PyQt5有所不同(应该与C++的也不一样,C++不熟,没有考证),连接信号的函数为Connect+信号名的格式。需要注意的是,待连接的槽的参数如果和信号不一致是不能直接连接的。让我们修改window.go:

package ui
 
func (c *Dialog) init() {
    c.PushButton.ConnectClicked(func(s bool) { c.Close() })
}

再次执行qtdeploy,并运行生成的程序,可以发现,点按钮之后窗口可以退出了。

其实还有另一种更方便的连接信号的槽的方式,让我们先将window.go还原,之后直接在Designer里边进行连接,如图:

保存,并执行qtdeploy,生成的程序效果是一样的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Qt开发及实例 第版》是一本针对Qt开发的教材,在课后的答案中,会对书中的练习题和问题进行解答和分析,帮助读者更好地理解和掌握Qt开发的知识和技能。 这本书的课后答案涵盖了各个章节的内容,包括Qt基础知识、窗口和控件、布局管理、信号与槽机制、文件和网络操作、数据库编程等方面的问题。通过阅读和分析这些答案,读者可以深入了解每个章节的重点和难点,并通过实例和案例来巩固所学的知识。 通过《Qt开发及实例 第版》这本书的课后答案的学习,读者可以提高自己的Qt开发能力,加深对Qt框架的理解和应用。同时,这本书的课后答案也可以作为学习过程中的参考和辅助资料,帮助读者解决一些自己遇到的问题和困惑。 总之,《Qt开发及实例 第版》课后答案是这本书的重要补充,它提供了对书中内容的深入解析和全面回答,让读者更好地掌握Qt开发的知识和技能。这本书及其课后答案对于想要学习和掌握Qt开发的读者来说,是一本非常有价值和实用的教材。 ### 回答2: 《Qt开发及实例 第版》是一本介绍Qt软件开发的参考书籍。本书分为多个章节,涵盖了Qt的基础知识和实际应用。下面是一些课后答案的简要说明: 1. 第一章:介绍了Qt开发环境的安装和配置,重点介绍了Qt的基本功能和特性。 2. 第二章:讲解了Qt的基本界面设计和窗口布局,包括使用布局管理器和创建自定义的窗口类。 3. 第章:介绍了Qt的信号和槽机制,以及如何在应用程序中使用它们来实现事件处理。 4. 第四章:详细介绍了Qt的图形编程,包括绘图、图像处理和图形效果等方面的内容。 5. 第五章:讲解了Qt的网络编程,包括使用Qt网络模块进行数据通信和远程访问。 6. 第六章:介绍了Qt的数据库编程,包括使用Qt的Sql模块进行数据库的连接和操作。 7. 第七章:讲解了Qt的多线程编程,包括使用Qt的多线程类进行并发操作和任务处理。 8. 第八章:介绍了Qt的动画编程,包括使用Qt的动画框架进行动画效果的实现。 9. 第九章:讲解了Qt的国际化和本地化,包括如何为应用程序添加多语言支持。 10. 第十章:介绍了Qt的测试框架和调试工具,以及如何对Qt应用程序进行测试和调试。 通过学习《Qt开发及实例 第版》,读者能够全面了解Qt开发技术和应用实践,能够独立开发Qt应用程序,并且能够运用Qt的各种特性和模块来实现不同的功能。同时,课后答案提供了对书中知识点的回顾和巩固,帮助读者更好地理解和掌握所学内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值