常用控件(一)

按钮类控件

QPushButton

使用QPushButton表示一个按钮,这是我们当前最熟悉的一个控件了;
QPushButton继承自QAbstractButton,这个类是个抽象类,是其他按钮类的父类;
在这里插入图片描述

QAbstractButton的一些属性:

属性说明
text按钮文本
icon按钮图标
iconSize按钮图标大小
shortCut按钮对应的快捷键
autoRepeat按钮是否会重复触发;如果设置为true,鼠标左键一直按着,则会产生持续的鼠标点击事件;如果设置为false,鼠标左键一直按着,则不会触发持续的鼠标点击事件,只有当鼠标松开,再次按下才会触发一次鼠标点击事件;
autoRepeatDelay重复触发的延时时间,按住按钮多久过后,开始重复触发
autoRepeatInterval重复触发的周期
  1. QAbstractButton作为QWidget的子类,当然也继承了QWidget的属性,上面介绍的属性是QAbstractButton的单独属性,那么前面介绍的QWidget核心属性对应QAbstractButton同样适用;
  2. Qt的API设计风格非常清晰,上面列出的属性都是可以获取和设置的;eg:获取文本:text();设置文本:setText(“你好”);
  3. 事实上QPushButton的核心功能都是QAbstractButton提供的,自身属性比较少;

eg1.设置带有图标的按钮;

  1. 准备图标
    在这里插入图片描述
  2. 创建qrc文件,并且将上述图标导进去;
    在这里插入图片描述
  3. 编写代码,创建带有图标的按钮;
    在这里插入图片描述
  4. 运行结果如下:
    在这里插入图片描述
    如果我们觉得,图标的大小太小了,那么我们可以通过setIconSize(const QSize&)接口来设置图标的大小:
    在这里插入图片描述

eg2 .设置带快捷键的按钮
设计思路:在界面上主要有5个按钮控件,其中四个按钮控件为方向键,一个按钮控件为target目标控件,当我们使用鼠标点击或者快捷键操作这四个控件的时候,那么这个target目标控件将会跟随着被点击的控件所指的方向所移动;

  1. 导入图标的qrc文件:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 通过图形化界面创建对应的图像,并且通过图形化界面的方式来为每个按钮设置图标:
    在这里插入图片描述
  3. 设置对应的槽函数
    在这里插入图片描述
  4. 设置快捷键
    在这里插入图片描述
  5. 运行结果如下:
    在这里插入图片描述
    不仅可以通过鼠标点击的方式来实现坤坤的移动,同时也可以通过我们设置的"w"、“a”、“s”、"d"来进行操作,忽略大小写;
    当然,我们除了上诉写法之外来设置快捷键,也可以通过下面的方式来进行设计:
    在这里插入图片描述
    也能是实现出快捷键的效果,同时,该方法在设计组合键的时候也比较方便,比如:现在我们就可以设计Ctrl+W来作为向上移动的快捷键:
    在这里插入图片描述
    这样设计过后,w、s、a、d快捷键就不起作用了,只有加上Ctrl才会有反应;
    但是通过上面的使用,我们发现,当我们一直按下快捷键的时候,坤坤会一直移动,而当我们鼠标一直左键按在移动按钮上的时候坤坤没有移动,只有当我们松开了,坤坤才会移动一下,因此,我们需要开启按钮的鼠标持续事件属性:
    在这里插入图片描述
    经过我们的设置过后,我们发现现在鼠标一直按着方向键确实能使坤坤一直移动;

QRadioButton

QRadioButton是单选按钮,可以当我们在多个选项中选择一个;
作为QAbstractButton的子类上面介绍的属性同样也适用于QRadioButton;

QAbstractButton 中和 QRadioButton 关系较⼤的属性

属性说明
checkable是否能被选择;true表示能,false表示不能
checked检测是否被选中;该前提是checkable开启;
autoExclusive是否排他,对于QRadioButton控件来说,他具有排他属性,也就是选中当前单选按钮过后,其它单选按钮会被取消选中状态,对于一个单选按钮来说默认是排他的

说了这么多,单选按钮长啥样?
我们来看看:
在这里插入图片描述

eg1 .选择性别
设计思路:
在界面上有4个控件,一个Label控件,用来显示一些文字;
3个RadioButton控件,一个表示男、一个表示女、一个表示保密

  1. 设计图如下:
    在这里插入图片描述
  2. 设置对应的槽函数
    在这里插入图片描述
  3. 运行结果:
    在这里插入图片描述
    当前的代码中程序启动的时候,什么也没有被选中,我们可以让程序的默认选项为男,因此我们的代码可以按照如下更改:
    在这里插入图片描述
    同理,我们也可以让保密选项无法被选中,这里主要有两种方式来实现:
    ①调用setEnabled直接禁用“其它”控件:
    在这里插入图片描述
    ②调用setCheckable() 让这个控件本身无法被选中,这里的选中是说无法被打勾,但是可以被点击:
    在这里插入图片描述

QAbstractButton的内置信号:
在这里插入图片描述
clicked(): 点击,即鼠标左键按下+松开就会触发该信号;
clicked(bool): 点击,即鼠标左键按下+松开会触发该信号,在触发该信号时,会将该控件是否被选中的状态也一并发送出去,对于QPushButton按钮来说没用,对于QRadioButton来说有用;
pressed(): 按下,即鼠标左键按下,就会触发该信号;
released(): 松开,即鼠标左键松开,就会触发该信号;
toggled(): 按钮状态切换了,就会发送该信号

接着,我们来分别演示一下这几个信号的用法和区别:
在这里插入图片描述

  1. clicked(bool)
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
  1. pressed、released
    对于槽函数:
    在这里插入图片描述
    运行结果如下:
    在这里插入图片描述
  1. toggled(bool)
    当某个按钮状态发生变化过后,那么会触发toggled信号并且该信号会携带上当前按钮的选中状态;
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

eg2 .单选框分组

  1. 设计对应的图形界面:
    在这里插入图片描述
  2. 运行:
    在这里插入图片描述
    我们发现,我们只能选择一个,我们选了汉堡,小食和饮料组的商品我们无法选择,对于其它也是同理;
    这主要是因为,RadioButton按钮的排他性影响的,这里我们主要有两种解决方案:
    ①关闭RadioButton的排他性:
    在这里插入图片描述
    这样确实能解决问题,但是也会引发一个新问题,就是,虽然我接触了排他性了,但是对于同一组中的商品我也能同时选中了,比如:
    在这里插入图片描述
    这是不合理的,我们希望的是,同一组排他,而不同组之间不存在排他性!
    ②采用QButtonGroup分组排他;
    我们使用QButtonGroup将同一组的商品放在一起,然后进行组内排他:
    在这里插入图片描述
    同时也不存在,组内也可以同时选择的情况;

QCheckBox

与QRadioButton单选按钮相对,只能选中一个;QCheckBox表示复选按钮,可以选中多个;

eg:

  1. 设计界面
    在这里插入图片描述
  1. 设置对应的槽函数:
    在这里插入图片描述
  2. 运行结果:
    在这里插入图片描述
  • 28
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南猿北者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值