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

[Qt]常用控件介绍-按钮类控件

目录

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"));
    //设置快捷键--方式2
    ui->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.Redio Button按钮

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

属性
属性说明
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.kler.cn/a/501772.html

相关文章:

  • Redis常见
  • Github 2025-01-11 Rust开源项目日报 Top10
  • 播放音频文件同步音频文本
  • Leetcode刷题笔记—栈与队列
  • Swift Protocols(协议)、Extensions(扩展)、Error Handling(错误处理)、Generics(泛型)
  • electron 启动警告
  • 【论文阅读】Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers
  • MySQL--2.1MySQL的六种日志文件
  • LabVIEW启动时Access Violation 0xC0000005错误
  • Node.js——path(路径操作)模块
  • FastDDS安装测试记录
  • 【数学】概率论与数理统计(五)
  • day06_Spark SQL
  • JavaScript函数:从基础到进阶拓展
  • C++中线程同步与互斥的4种方式介绍、对比、场景举例
  • web前端第六次作业---制作网页页面
  • 【25考研】西南交通大学软件工程复试攻略!
  • 《AI赋能鸿蒙Next,打造极致沉浸感游戏》
  • goland 环境变量配置
  • Java阶段四04
  • 【Artificial Intelligence篇】AI 入侵家庭:解锁智能生活的魔法密码,开启居家梦幻新体验
  • LeetCode - #186 翻转字符串里的单词 II(会员题)
  • 搭建k8s集群
  • 设计模式-结构型-组合模式
  • AI知识-TF-IDF技术(Term Frequency-Inverse Document Frequency)
  • 【练习】力扣 热题100 轮转数组