QT C++(QT控件 QPushButton,QRadioButton,QCheckBox)

news2024/11/26 16:25:09

文章目录

  • 1. QPushButton 普通按钮
  • 2. QRadioButton 单选按钮
  • 3. QCheckBox 复选按钮

1. QPushButton 普通按钮

QPushButton中的重要属性

  1. text:按钮中的文本
  2. icon:按钮的图标
  3. iconSize:按钮中图标的尺寸
  4. shortCut:按钮对应的快捷键,可以直接通过案件名字设置,也可以通过按键枚举设置
  5. autoRepeat:按钮是否能连续触发
  6. autoRepeatDelay:触发的延时时长
  7. autoRepeatInterval:重复触发周期

属性修改案例代码:
QKeySequece:按下的快捷键队列,因为快捷键不只是一个

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
//    创建图标对象
//    QIcon icon(":/test.jpg");
    //设置目标  按钮图标
    ui->pushButton->setIcon(QIcon(":/test.jpg"));

    //设置图标尺寸,单位是像素
    ui->pushButton->setIconSize(QSize(50,50));
    ui->up->setIcon(QIcon(":up.png"));
    ui->up->setIconSize(QSize(60,60));
    ui->down->setIcon(QIcon(":down.png"));
    ui->down->setIconSize(QSize(60,60));
    ui->left->setIcon(QIcon(":left.png"));
    ui->left->setIconSize(QSize(60,60));
    ui->right->setIcon(QIcon(":right.png"));
    ui->right->setIconSize(QSize(60,60));

    //设置按钮快捷键
    ui->up->setShortcut(QKeySequence("w"));
    ui->left->setShortcut(QKeySequence("a"));//组合键
//    ui->down->setShortcut(QKeySequence("s"));
//    ui->right->setShortcut(QKeySequence("d"));
    ui->down->setShortcut(QKeySequence(Qt::Key_S));
    ui->right->setShortcut(QKeySequence("d"));
//    ui->right->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D));//组合快捷键

    //设置按钮连续触发(键盘快捷键默认支持连续触发,鼠标不支持)
    ui->up->setAutoRepeat(true);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_up_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
}

void Widget::on_down_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
}

void Widget::on_left_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
}

void Widget::on_right_clicked()
{
    //获取目标按钮当前位置
    QRect rect=ui->pushButton->geometry();
    //更新按钮位置信息
    ui->pushButton->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
}

2. QRadioButton 单选按钮

QRadioButton常见属性:

  1. checkable:是否能选中
  2. checked:是否已经选中,checkable是checked的前提
  3. autoExclusive:是否排他,选中一个按钮会取消其他按钮的选中,QRadioButton默认排他。

测试代码:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //修改默认选项
    ui->secret->setChecked(true);
    ui->label->setText("默认未知");
    //错误单选框不被选中,但是可以响应事件的
    ui->wrong->setCheckable(false);
    //设置为不响应任何事件(灰色)
    ui->wrong->setDisabled(true);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_man_clicked()
{
    //修改界面上的label标签
    ui->label->setText("选择男");
}

void Widget::on_woman_clicked()
{
    ui->label->setText("选择女");
}

void Widget::on_secret_clicked()
{
    ui->label->setText("未知");
}

QRadioButton特殊信号

  1. clecked(bool checked):checked为单选按钮是否选中
  2. pressed:单选按钮按下时响应
  3. release:单选按钮松开时响应
  4. toggled(bool checked):checked状态改变时触发此信号

测试代码:

void Widget::on_radioButton_clicked(bool checked)
{
    qDebug()<<"clicked:"<<checked;
}

void Widget::on_radioButton_pressed()
{
    qDebug()<<"pressed";
}

void Widget::on_radioButton_released()
{
    qDebug()<<"release";
}

void Widget::on_radioButton_toggled(bool checked)
{
    qDebug()<<"toggled:"<<checked;
}

首次点击bool时运行截图如下:
在这里插入图片描述
QRadioButton设置非排他方式,使用QButtonGroup对不同的RadioButton分组,不同组之间不排他。但是组之间是排他的

#include "widget.h"
#include "ui_widget.h"
#include <QButtonGroup>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //创建分组
    QButtonGroup*one=new QButtonGroup(this);
    QButtonGroup*two=new QButtonGroup(this);
    QButtonGroup*three=new QButtonGroup(this);

    //将单选按钮放到不同组
    one->addButton(ui->radio1);
    one->addButton(ui->radio2);
    one->addButton(ui->radio3);

    two->addButton(ui->radio4);
    two->addButton(ui->radio5);
    two->addButton(ui->radio6);

    three->addButton(ui->radio7);
    three->addButton(ui->radio8);
}

Widget::~Widget()
{
    delete ui;
}

3. QCheckBox 复选按钮

QCheckBox的相关属性和QRadioButton相同。checked,checkable用法和上文一致不在赘述。

不同的复选按钮不冲突

使用案例:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    QString str="兴趣爱好:";
    if(ui->checkBox->isChecked()){
        str+=ui->checkBox->text();
    }
    if(ui->checkBox_2->isChecked()){
        str+=ui->checkBox_2->text();
    }
    if(ui->checkBox_3->isChecked()){
        str+=ui->checkBox_3->text();
    }
    ui->label->setText(str);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1805554.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于烫烫烫和屯屯屯

微较的msvc编译器&#xff0c;调试模式下为了方便检测内存的非法访问&#xff0c;对于不同的内存做了初始化&#xff0c; 未初始化栈&#xff1a; 0xCCCCCCCC 未初始化堆&#xff1a; 0xCDCDCDCD 已释放的堆&#xff1a; 0xDDDDDDDD 0xCCCC解释为GB2312字符即是烫&#xff…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言&#xff1a;在Java编程中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09;与浅拷贝&#xff08;Shallow Copy&#xff09;是两个非常重要的概念。它们涉及到对象在内存中的复制方式&#xff0c;对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…

AI视频教程下载:如何用ChatGPT来求职找工作?

这是一个关于使用ChatGPT找工作的课程&#xff0c;作者分享了自己的求职经验和技巧&#xff0c;介绍了如何使用人工智能来改进个人资料和简历&#xff0c;以及如何研究公司和面试。通过细节处理职业目标、分享个人兴趣和技能、寻求导师和专业发展机会&#xff0c;以及在行业内建…

【K8s源码分析(三)】-K8s调度器调度周期介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 本次分析参考的K8s版本是v1.27.0。 K8s的整体调度框架如下图所示。 调度框架顶层函数 K8s调度器调度的核心函数schedulerone在pkg/scheduler/schedule_one.go:62&#xff0c;如下&#xff0c;这里将一些解释写在了注…

CTF Show MISC做题笔记

MISCX 30 题目压缩包为misc2.rar,其中包含三个文件:misc1.zip, flag.txt, hint.txt。其中后两个文件是加密的。 先解压出misc1.zip, 发现其中包含两个文件&#xff1a;misc.png和music.doc。其中后面文件是加密的。 解压出misc.png,发现图片尾部有消息&#xff1a;flag{flag…

Autosar Dem配置-Condition(TRC)的使用-基于ETAS软件

文章目录 前言Dem配置DemEnableConditionDemEnableConditionIdDemEnableConditionStatus DemEnableConditionGroupDemEventParameter 接口配置代码实现总结 前言 在车辆工作状态下&#xff0c;每个DTC检测可能都需要一个前提条件&#xff0c;否则如果任何条件下都可以进行DTC检…

【ARM Cache 与 MMU 系列文章 7.3 – ARMv8/v9 MMU 块描述符与页表描述符】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 上篇文章&#xff1a;【ARM Cache 系列文章 7.2 – ARMv8/v9 MMU 页表配置详细介绍 03 】 文章目录 MMU 块描述符与页描述符Block DescriptorBlock descriptor formatsBlock Entry 介绍Block En…

【C#】开发过程中记录问题

1.DateTimePicker控件获取时间 拖动控件,设置属性format为custom格式。例如我想获得20240101这种类型的string类型的数据: string DateTime = DateTimePicker.Value.ToString("yyyyMMdd");2.ComboBox下拉列表控件 默认为DropDown,下拉可修改。 DropDownList为下…

《Windows API每日一练》

2.2.8 第15练&#xff1a;处理WM_CLOSE消息 /*------------------------------------------------------------------------ 015 编程达人win32 API每日一练 第15个例子WM_CLOSE.C&#xff1a;回调函数---处理WM_CLOSE消息 WM_CLOSE消息 DestroyWindow函数 注意&#xf…

SprirngBoot+Vue房屋租赁系统(前后端分离)

技术栈 JavaSpringBootMavenMySQLMyBatisVueShiroElement-UI 角色对应功能 租客管理员 功能截图

Git【版本控制命令】

02 【本地库操作】 1.git的结构 2.Git 远程库——代码托管中心 2.1 git工作流程 代码托管中心用于维护 Git 的远程库。包括在局域网环境下搭建的 GitLab 服务器&#xff0c;以及在外网环境下的 GitHub 和 Gitee (码云)。 一般工作流程如下&#xff1a; 1&#xff0e;从远程…

[Cesium学习]

Popup弹窗 Cesium点位弹窗_cesium popup弹窗-CSDN博客 Cesium构造popup弹窗函数_cesium popup-CSDN博客 开发之家 - Cesium构造popup弹窗函数 GitHub - cesium-plugin/cesium-popup-es6: 气泡弹窗 热力图分析 // 创建Cesium Viewer实例 const viewer new Cesium.Viewer(c…

C#中使用Mysql批量新增数据 MySqlBulkCopy

在C#中使用MySqlBulkCopy类来批量复制数据到MySQL数据库&#xff0c;首先需要确保你的项目中已经引用了MySQL Connector。以下是使用MySqlBulkCopy的基本步骤&#xff1a; 1.安装MySQL Connector。 可以通过NuGet安装MySQL Connector&#xff1a; 2.在代码中引用必要的命名空间…

安装 JDK 17

安装包 百度网盘 提取码&#xff1a;6666 安装步骤 双击下载得到的安装包&#xff0c;开始安装&#xff1a; 正在安装&#xff1a; 安装完成&#xff1a; 安装路径下&#xff0c;多出来了很多新的内容。安装文件夹所包含的内容及作用&#xff1a; src 是 JDK 的源码包。类库…

DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

VueRouter路由与Vuex状态管理

前言 随着前端技术的快速发展和前后端分离架构的普及&#xff0c;单页面应用&#xff08;SPA&#xff09;已成为现代Web开发的主流。在SPA中&#xff0c;前端路由和状态管理扮演着至关重要的角色。Vue3作为当前流行的前端框架之一&#xff0c;提供了强大的路由&#xff08;Vue …

sqli-labs 靶场 less-7 第七关详解:OUTFILE注入与配置

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它&#xff0c;我们可以学习如何识别和利用不同类型的SQL注入漏洞&#xff0c;并了解如何修复和防范这些漏洞。Less 7 SQLI DUMB SERIES-7判断注入点 进入页面中&#xff0c;并输入数据查看结果。 发现空数据提…

【JS实战03】学生信息的添加与删除

说明&#xff1a;本文章提供相应源码&#xff0c;需要到主页资源栏下载&#xff0c;并搭配源码看本文档&#xff1b;重点阐述每个JS模块实现过程中的重难点问题。 一&#xff1a;录入模块 1 渲染数据思路 减少DOM相关操作&#xff0c;避免因过多的DOM操作造成程序运行速度的…

机车 - 安驾培训记录

1&#xff0c;先学倒车后扶车。 先断电。脚蹬在外的话要展开&#xff0c;防止推过头。 可以挂档就挂到1档。可以用皮套把刹车拉紧&#xff0c;或手捏在刹车上。防止下坡溜车或扶起时车不稳。 站在车倒向的一侧&#xff0c;车把向内&#xff0c;方便一手抓车把&#xff0c;一…

【iOS】内存泄漏检查及原因分析

目录 为什么要检测内存泄漏&#xff1f;什么是内存泄漏&#xff1f;内存泄漏排查方法1. 使用Zombie Objects2. 静态分析3. 动态分析方法定位修改Leaks界面分析Call Tree的四个选项&#xff1a; 内存泄漏原因分析1. Leaked Memory&#xff1a;应用程序未引用的、不能再次使用或释…