当前位置: 首页 > news >正文

[Qt]常用控件介绍-按钮类控件-QPushButton、QRedioButton、QCheckBox、QToolButton控件

目录

1.QPushButton按钮

介绍

属性 

Demo:键盘方向键控制人物移动 

2.Redio Button按钮

属性

clicked、pressed、released、toggled区别 

单选按钮的分组

Demo:点餐小程序

 3.CheckBox按钮

属性

Demo:获取今天的形成计划

4.ToolButton按钮 


1.QPushButton按钮

介绍

        QPushButton是继承与一个QAbstractButton类,这个类是一个抽象的类,类内部包含了按钮类所需要的纯虚函数,是所有按钮的一个父类。在Qt Designer中也可以看到继承关系。

属性 
属性说明
text按钮的文本
icon按钮中的图标
iconSize按钮中图标的一个尺寸
shortCut

按钮对应的一个快捷

autoRepeat        按钮是否会重复触发,当鼠标按住不放的时候,如果设置为true的话,会持续产生鼠标点击事件,如果欸false的话,则需要释放鼠标,再次点击才会触发鼠标点击事件。
autoRepeatDelay        重复触发的延迟事件,按钮按住多久,才会触发第二次的鼠标点击事件
autoRepeatInterval重复触发的周期
Demo:键盘方向键控制人物移动 

        流程:放置按钮并设置图标-->按钮绑定槽函数-->设置快捷键-->开启按键连续触发

        对于快捷键的设置,需要传递一个QKeySequence对象参数,所以我们在设置时,要将快捷键设置在QKeySequence生成一个对象在传递给setShortCut函数。对于快捷键的设置可以是组合建,直接写入xx + xx字符串即可。对于上述的快捷键设置虽然说简单,但是没有安全性检查,对于Qt内部内置了一系列的枚举按键,可以使用枚举类型的变量设置快捷键,可以很好的检查快捷键的正确性。其实对于组合键的设置,是两个位图的相加。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->pushButton_false->setEnabled(false);//设置被移动的图片和大小ui->pushButton_people->setIcon(QIcon(":/people.png"));ui->pushButton_people->setIconSize(QSize(500, 500));//设置方向键的图标ui->pushButton_up->setIcon(QIcon(":/up.png"));ui->pushButton_down->setIcon(QIcon(":/down.png"));ui->pushButton_left->setIcon(QIcon(":/left.png"));ui->pushButton_right->setIcon(QIcon(":/right.png"));//设置快捷键--方式1
//    ui->pushButton_up->setShortcut(QKeySequence("w"));
//    ui->pushButton_down->setShortcut(QKeySequence("s"));
//    ui->pushButton_left->setShortcut(QKeySequence("a"));
//    ui->pushButton_right->setShortcut(QKeySequence("d"));//设置快捷键--方式2ui->pushButton_up->setShortcut(QKeySequence(Qt::Key_W));ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_S));ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_A));ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_D));//设置鼠标连续触发(对于键盘来说默认就是连发的)ui->pushButton_up->setAutoRepeat(true);ui->pushButton_down->setAutoRepeat(true);ui->pushButton_left->setAutoRepeat(true);ui->pushButton_right->setAutoRepeat(true);
}Widget::~Widget()
{delete ui;
}//向上移动的按钮
void Widget::on_pushButton_up_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x(), rect.y() - 5, rect.width(), rect.height());
}//向下移动的按钮
void Widget::on_pushButton_down_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x(), rect.y() + 5, rect.width(), rect.height());
}//向左移动的按钮
void Widget::on_pushButton_left_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x() - 5, rect.y(), rect.width(), rect.height());
}//向右移动的按钮
void Widget::on_pushButton_right_clicked()
{//首先获取到人物的位置QRect rect = ui->pushButton_people->geometry();//基于上次的位置设置新的位置ui->pushButton_people->setGeometry(rect.x() + 5, rect.y(), rect.width(), rect.height());
}

2.RedioButton按钮

        该按钮是一个单选的按钮,可以让我们在多个选项中选中一个。

属性
属性说明
checkable是否可以被选中
checked起初的时候,是否已经被选中
autoExclusive        是否排他,也就是说选中一个按钮之后是否会取消其他按钮的选中结果,默认来说是排他的。

        对于RedioButton来说,内部会有一个是否被选中的属性,这个属性不需要我们去手动改变,无论是PushButton触发的chicked信号,还是RedioButton触发的toggle信号都是由按钮自身检测到内部状态的变化而触发的信号,所以内部状态变化就包含了更新选中与为选中状态的字段了。

clicked、pressed、released、toggled区别 

        clicked是一次完整的点击后,触发点击信号,也就是鼠标按下并释放后触发,如果说释放的时候鼠标不在按钮的范围内也是不会触发的。pressed是鼠标按下就触发。released是鼠标释放就会触发,此时署鼠标释放的时候不管在哪里都会触发。toggled是checked属性改变的时候触发。也就是说连续点击的时候,不会触发信号,因为按钮的checked状态是没有改变的。

单选按钮的分组

        对于单选按钮有排他的属性,那我们如果向设置几个不同类别的排他选项怎么办呢,Qt内置了一个QButtonGroup类,可以实例化出按钮组的对象,内部提供了addButton接口函数,可以将我们创建的RedioButton添加到该对象内部,在一个对象内部的单选按钮就是分在了一个组。

Demo:点餐小程序
#include <QButtonGroup>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化组对象QButtonGroup* group1 = new QButtonGroup(this);QButtonGroup* group2 = new QButtonGroup(this);QButtonGroup* group3 = new QButtonGroup(this);//分组group1->addButton(ui->radioButton);group1->addButton(ui->radioButton_2);group1->addButton(ui->radioButton_3);group2->addButton(ui->radioButton_4);group2->addButton(ui->radioButton_5);group2->addButton(ui->radioButton_6);group3->addButton(ui->radioButton_7);group3->addButton(ui->radioButton_8);
}

 3.CheckBox按钮

        该按钮是一个复选按钮,可以允许选中多个,没有排他的属性。

属性
属性说明
checked是否被选中
checkable是否可以被选中
Demo:获取今天的形成计划

4.ToolButton按钮 

        QToolButton的大部分功能和QPushButton是一致的,但是QToolButton主要是应用于工具栏,菜单栏等场景。

http://www.lryc.cn/news/521459.html

相关文章:

  • Windows 蓝牙驱动开发-安装蓝牙设备
  • element表格有横向滚动条时产生错位或者偏移(火狐浏览器)
  • C# 下 SQLite 并发操作与锁库问题的 5 种解决方案
  • 2025封禁指定国家ip-安装xtables-addons记录
  • 卷积神经02-CUDA+Pytorch环境安装
  • 高斯数据库与MySQL数据库的区别
  • 【 PID 算法 】PID 算法基础
  • 【AI】【RAG】如何通过WebUI部署与优化RAG问答系统
  • SpringBoot之OriginTrackedPropertiesLoader类源码学习
  • 51单片机 AT24C02(I2C总线)
  • Shell正则表达式与文本处理三剑客(grep、sed、awk)
  • Docker Desktop 中安装 MySQL 并开启远程访问的详细教程
  • 计算机网络 (39)TCP的运输连接管理
  • 麦田物语学习笔记:构建游戏的时间系统
  • Tauri教程-进阶篇-第二节 命令机制
  • candb++ windows11运行报错,找不到mfc140.dll
  • 提供的 IP 地址 10.0.0.5 和子网掩码位 /26 来计算相关的网络信息
  • vscode离线安装插件--终极解决方案
  • LabVIEW启动时Access Violation 0xC0000005错误
  • string(一)
  • 计算机网络 (41)文件传送协议
  • C++ STL之容器介绍(vector、list、set、map)
  • redisson 连接 redis5报错 ERR wrong number of arguments for ‘auth‘ command
  • LeetCode:131. 分割回文串
  • React-useState讲解
  • 混币器是什么,波卡跨链交易平台
  • 【PHP】双方接口通信校验服务
  • Web第一次作业
  • CentOS 6.8 安装 Nginx
  • 网络网络层ICMP协议