qt widgets 菜单_Qt开发之Go篇(五)

4ec64c2256f9e103f67a1c2db6cf0a2a.png

QPushButton

基本用法就像前边Hello World示例中的那样,现在我们看看不基本的用法。

状态保持

QPushButton有一个属性是checkable,当设置为true之后按钮就会点一下是按下,再点一下弹起来,如下图所示:

0d6acdc181c4c29d528c5a4bc9ff68a0.gif

实现代码如下:

package main

import (
    "os"

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

func main() {
    widgets.NewQApplication(len(os.Args), os.Args)
    window := widgets.NewQDialog(nil, 0)
    window.Resize2(300, 200)
    gridLayout := widgets.NewQGridLayout(window)
    label := widgets.NewQLabel2("你走了", window, 0)
    button := widgets.NewQPushButton2("你过来啊", window)
    button.SetCheckable(true)
    button.ConnectClicked(func(s bool) {
        if s {
            label.SetText("你来了")
        } else {
            label.SetText("你走了")
        }
    })
    gridLayout.AddWidget(label)
    gridLayout.AddWidget(button)
    window.Show()
    widgets.QApplication_Exec()
}

弹出菜单

有的时候,逻辑上我们会希望一个按钮能够实现多种功能,此时可以结合弹出的菜单来实现。此时,需要涉及到另两个类(姑且这么叫吧)QMenuQAction,我们可以利用QMenu定义一个菜单,菜单中有若干个QAction来负责实现具体的动作。

afcb1baff9f3a2d49fc75ad7f4c83ff2.gif

实现代码如下:

package main

import (
    "os"

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

func main() {
    widgets.NewQApplication(len(os.Args), os.Args)
    window := widgets.NewQDialog(nil, 0)
    window.Resize2(300, 200)
    gridLayout := widgets.NewQGridLayout(window)
    label := widgets.NewQLabel2("你走了", window, 0)
    button := widgets.NewQPushButton2("你过来啊", window)
    menu := widgets.NewQMenu(window)
    action := menu.AddAction("我怂了")
    action.ConnectTriggered(func(s bool) {
        label.SetText("哈哈哈")
    })
    button.SetMenu(menu)
    gridLayout.AddWidget(label)
    gridLayout.AddWidget(button)
    window.Show()
    widgets.QApplication_Exec()
}

QAction也可以像按钮一样设置为checkable,都是一样的,我就不废话了。

三态按钮

所谓三态,就是放置Play是一态,按下是一态,还有鼠标悬停是一态,通常是用来做一些颜色啊、形状啊之类的提示。此时需要qss登场了。

增加如下代码:

window.SetStyleSheet(`
    QPushButton:hover{
        background-color: red;
        border-radius: 10px
    }
    `)

8044d97e9d6edaf450b94f10ffe58eb8.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值