30.QToolButton

通常在工具栏内部使用,一般不显示文本标签,只显示一个图标,像这样

目录

1  创建和基本显示操作

1.1  创建QToolButton QToolButton()

1.2  设置文字 setText()

1.3  设置图标 setIcon()

1.4  改变图标大小 setIconSize()

1.5  设置提示文本 setToolTip()

2  工具按钮样式设置

2.1  设置 setToolButtonStyle()

2.2  获取 toolButtonStyle()

3  设置箭头

3.1  设置 setArrowType()

3.2  获取 arrowType()

4  自动提升

4.1  设置 setAutoRaise()

4.2  获取 autoRaise()

5  菜单和弹出模式

5.1  设置弹出模式 setPopupMode()

5.1.1  QToolButton.DelayedPopup

5.1.2  QToolButton.MenuButtonPopup

5.2  弹出模式对clicked信号的影响

5.2.1  DelayedPopup 延时弹出

5.2.3  InstantPopup 点击按钮立即弹出

5.3  获取弹出模式 popupMode()

6  菜单信号

6.1  区分不同的action

6.1.1  把triggered绑给btn之后如何区分不同的行为

6.1.2  其他区分行为的方式

6.2  发送数据 setData()


1  创建和基本显示操作

1.1  创建QToolButton QToolButton()

看上去和普通的按钮差不多

1.2  设置文字 setText()

我们先对其设置提示文字

运行结果

1.3  设置图标 setIcon()

我们现在再对其设置图标

运行结果

现在我们发现之前设置的文字没有了

  • 现在我们得出结论,在QToolButton的默认情况下,文字与图标只能设置一种

1.4  改变图标大小 setIconSize()

我们现在调整一下这个图标的大小

发现这个图标变大了

1.5  设置提示文本 setToolTip()

提示文本:当我们在按钮上悬停一阵后,会显示提示文本

运行结果

2  工具按钮样式设置

上面我们试了一下,在默认的情况下,图标和文字是不能在QToolButton按钮中并存的,现在我们就想把它搞并存,此时我们应该设置其工具按钮样式

2.1  设置 setToolButtonStyle()

我们可以使用setToolButtonStyle()对其设置不同的样式,参数分别为

  • Qt.ToolButtonIconOnly 仅显示图标
  • Qt.ToolButtonTextOnly 仅显示文字
  • Qt.ToolButtonTextBesideIcon 文本显示在图标旁边
  • Qt.ToolButtonTextUnderIcon 文本显示在图标下方
  • Qt.ToolButtonFollowStyle 默认风格

首先我们先创建一个QToolButton并对其设置文字与图标

此时它只执行后者

我们将ToolButtonStyle置为仅显示文字

此时的状态

仅显示图标

文本显示在图标旁边

文本显示在图标下方

默认风格

2.2  获取 toolButtonStyle()

这个函数的返回值是一个数字,从0到4依次对应:

  • 0 - Qt.ToolButtonIconOnly 只有图标
  • 1 - Qt.ToolButtonTextOnly 只有文字
  • 2 - Qt.ToolButtonTextBesideIcon 文字在图旁边
  • 3 - Qt.ToolButtonTextUnderIcon 文字在图下方
  • 4 - Qt.ToolButtonFollowStyle 默认风格

在设置中,我们也可以使用数字0-4来代替上面的Qt.ToolButtonIconOnly等参数

3  设置箭头

此处的设置箭头为按钮上的图标

在工具按钮样式设置为默认时:

  • 如果设置为非无箭头形式,会覆盖掉之前设置的图标或文本
  • 如果是无箭头形式会展示出图标或文本

3.1  设置 setArrowType()

括号中可选的值有

  • Qt.NoArrow 无箭头
  • Qt.UpArrow 向上箭头
  • Qt.DownArrow 向下箭头
  • Qt.LeftArrow 向左箭头
  • Qt.RightArrow 向右箭头

创建一个按钮后将其设置为无箭头

向上箭头

向下箭头

向左箭头

向右箭头

3.2  获取 arrowType()

这个函数会返回一个数字,数字0-4分别代表

  • 0 - Qt.NoArrow 无箭头
  • 1 - Qt.UpArrow 向上箭头
  • 2 - Qt.DownArrow 向下箭头
  • 3 - Qt.Qt.LeftArrow 向左箭头
  • 4 - Qt.Qt.RightArrow 向右箭头

我们在设置时也可以用数字进行设置

如果工具按钮样式设置为配合使用时,箭头会当作图标处理,像下图这样

4  自动提升

在QToolButton中是没有扁平化的,自动提升功能与扁平化功能相似,

但是将PushButton设置扁平化后,鼠标往按钮上放,按钮在默认情况下是没有任何效果的

QToolButton的自动提升是先将按钮扁平化,之后使用鼠标放在按钮上,按钮有效果

4.1  设置 setAutoRaise()

运行后的状态

我们把鼠标放在按钮上

4.2  获取 autoRaise()

5  菜单和弹出模式

QToolButton与QPushButton的setMenu的功能是不太一样的

此时我们搞一个菜单并把菜单给QToolButton上

运行结果

此时我们点击这个按钮发现并不能弹出菜单

我们还需要对其进行弹出模式的设置

5.1  设置弹出模式 setPopupMode()

括号可以放:

  • QToolButton.DelayedPopup 鼠标按住一会儿才显示
  • QToolButton.MenuButtonPopup 有一个专门的指示箭头,点击箭头才显示
  • QToolButton.InstantPopup 点了按钮就显示

5.1.1  QToolButton.DelayedPopup

我们按住按钮一会儿后,菜单出现了

这个功能在浏览器的后退按钮使用过,当我们按住后退按钮一阵后

他会产生之前的记录

5.1.2  QToolButton.MenuButtonPopup

右侧有一个箭头

我们点击一下

 5.1.3  QToolButton.InstantPopup

我们点击了一下按钮

5.2  弹出模式对clicked信号的影响

设置不同的菜单弹出方式也会对按钮的clicked信号产生影响,但是无论是什么信号对菜单都没有影响

5.2.1  DelayedPopup 延时弹出

现在我们设置延迟弹出,之后将信号绑定一个槽函数

我们普通点击一下按钮后,槽函数会触发

我们长按之后,此时菜单出现,我们再点击一下别处,此时槽函数不会被触发

我们现在设置为点击旁边的小三角

此时我们点三角左侧的按钮可以触发槽函数,点按钮左侧的三角不可以触发槽函数

5.2.3  InstantPopup 点击按钮立即弹出

现在我们设置为立即弹出

此时我们点击按钮并不会触发槽函数

5.3  获取弹出模式 popupMode()

这个函数的返回值是一个数字,0-2分别对应:

  • 0 - QToolButton.DelayedPopup 延时弹出
  • 1 - QToolButton.MenuButtonPopup 点击按钮旁边的箭头弹出
  • 2 - QToolButton.InstantPopup 按按钮弹出

6  菜单信号

我们首先设置一组菜单到按钮上

运行之后点击一下按钮

 现在我们搞一个槽函数

给他连接上槽函数

我们现在点一下菜单中的行为

此时我们进入子菜单中的行为也会触发槽函数

6.1  区分不同的action

6.1.1  把triggered绑给btn之后如何区分不同的行为

那现在就有一个问题,我们怎么区分点击的不同行为

triggered可以传递出一个参数action

我们首先将这两个行为显示

 运行后我们点击一次主菜单中的行为,再点击一次子菜单中的行为

运行结果

这个时候我们就可以对每个行为分别设置它所执行的语句了

我们将两个行为从方法中提取出来

更改槽函数

运行之后我们点击一下主菜单中的行为,然后再点击一下子菜单中的行为,运行结果

6.1.2  其他区分行为的方式

我们也可以把trigged信号直接绑给action

我们把btn连接取消掉后,增加action triggered连接

运行后我们点击一下主菜单中的行为,再点击一下子菜单中的行为,运行结果

6.2  发送数据 setData()

triggered发送信号是我么默认的信号,内容为action,我们也可以对这个内容进行更改

现在我们将发送的数据改为1,2

更改槽函数

现在我们点击一下主菜单中的行为,在点击一下子菜单中的行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyuoa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值