Go-Qt5开发之Qt与结构体(39)

Go-Qt5开发之Qt与结构体

案例说明

通过结构体实现类一般的体验。

demo.go

package main

import (
	"fmt"
	"github.com/therecipe/qt/core"
	"github.com/therecipe/qt/gui"
	"github.com/therecipe/qt/widgets"
	"os"
)

/*
通过结构体实现类一般的体验。
*/

type UIMainWindow struct {
	CentralWidget *widgets.QWidget
	Menubar       *widgets.QMenuBar
	Statusbar     *widgets.QStatusBar
	PushButton1   *widgets.QPushButton
	PushButton2   *widgets.QPushButton
}

func (w *UIMainWindow) SetupUI(MainWindow *widgets.QMainWindow) {
	MainWindow.SetObjectName("MainWindow")
	// 设置窗口的标题
	MainWindow.SetWindowTitle("Qt 教程")
	// 设置窗口的位置和大小
	MainWindow.SetGeometry2(300, 300, 300, 220)
	// 设置窗口的图标
	MainWindow.SetWindowIcon(gui.NewQIcon5("images/app.ico"))

	// 中心窗口组件载体
	w.CentralWidget = widgets.NewQWidget(MainWindow, core.Qt__Widget)
	// w.CentralWidget.SetGeometry(core.NewQRect4(300, 300, 300, 220))
	w.CentralWidget.SetGeometry2(0, 0, 300, 220)
	MainWindow.SetCentralWidget(w.CentralWidget)

	// 状态栏
	w.Statusbar = widgets.NewQStatusBar(MainWindow)
	w.Statusbar.SetObjectName("Statusbar")
	MainWindow.SetStatusBar(w.Statusbar)

	// 按钮
	w.PushButton1 = widgets.NewQPushButton2("PushButton1", w.CentralWidget)
	w.PushButton1.Move2(30, 50)
	w.PushButton1.ConnectClicked(w.ButtonClicked)

}

func (w *UIMainWindow) ButtonClicked(checked bool) {
	fmt.Println("ButtonClicked", checked)
	w.Statusbar.ShowMessage("sender"+" was pressed", 0)
}

func (w *UIMainWindow) RetranslateUi(MainWindow *widgets.QMainWindow) {
	_translate := core.QCoreApplication_Translate
	MainWindow.SetWindowTitle(_translate("MainWindow", "QT 教程", "", -1))
	w.PushButton1.SetText(_translate("MainWindow", "PushButton", "", -1))
}

func main() {
	// 创建一个应用程序对象
	// sys.argv参数是一个列表,从命令行输入参数
	widgets.NewQApplication(len(os.Args), os.Args)

	// 初始化窗口
	MainWindow := widgets.NewQMainWindow(nil, 0)

	uiMain := UIMainWindow{}
	uiMain.SetupUI(MainWindow)
	uiMain.RetranslateUi(MainWindow)

	// 显示组件
	MainWindow.Show()

	// 确保应用程序干净的退出
	widgets.QApplication_Exec()
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值