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

文章目录

  • 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);
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vs2013 - 打包

文章目录 vs2013 - 打包概述installshield2013limitededitionMicrosoft Visual Studio 2013 Installer Projects选择哪种来打包? 笔记VS2013打包和VS2019打包的区别打包工程选择view打包工程中单击工程名称节点&#xff0c;就可以在属性框中看到要改的属性(e.g. 默认是x86, 要…

LabVIEW控制PLC的实现方式

LabVIEW与PLC的结合可以充分发挥两者的优点&#xff0c;实现更高效、灵活和可靠的自动化控制系统。本文将详细介绍LabVIEW控制PLC的实现方式&#xff0c;包括通信接口、数据交换、编程方法及实际应用案例&#xff0c;帮助用户理解并应用这一技术。 通信接口 常见通信协议 La…

【SQLAlChemy】常见的数据类型有哪些,Column可选的参数有哪些呢?

常见数据类型与Column参数 常见类型 Integer&#xff1a;整数类型&#xff0c;对应数据库的 int 类型。Float&#xff1a;浮点数类型&#xff0c;对应数据库的 float 类型。它占用 32 位空间。Double&#xff1a;双精度浮点数类型&#xff0c;对应数据库的 double 类型&#…

【GD32F303红枫派使用手册】第十一节 ADC-电源电压单通道ADC检测实验

11.1 实验内容 通过本实验主要学习以下内容&#xff1a; ADC的简介 GD32F303 ADC工作原理 查询方式实现ADC单通道采样 11.2 实验原理 11.2.1 ADC原理 我们知道&#xff0c;自然界中有非常多的模拟信号&#xff0c;比如上一节提到的光照强度&#xff0c;还有其他的例如温…

Python教程:Python操作MySQL基础使用

8、Python操作MySQL基础使用 8.1 安装pymysql pip install pymysql8.2 测试连接 测试代码 from pymysql import Connection# 获取到MySQL数据库的链接对象 conn Connection(# 主机名hostlocalhost,# 端口号,默认3306port3306,# 账户名userroot,# 密码password3535 )# 打印…

【JavaEE】Spring Boot 配置文件详解

一.配置文件的相关概念. 配置文件主要用于配置应用程序的行为和属性. Spring Boot的配置文件提供了一种灵活且强大的方式&#xff0c;用于管理应用程序的配置信息。很多项目或框架的配置信息也放在配置文件中: 项目的启动端口.数据库的连接信息(用户名/密码/驱动等的信息).第三…

Python 使用scrapy框架

1、安装scrapy 2、使用scrapy创建项目,在终端命令行 执行如下命令&#xff0c;会创建一个myproject项目 scrapy startproject myproject 3、创建完成后&#xff0c;目录结构如下 4、cd myproject进入项目 ,执行scrapy genspider weather ******&#xff0c;会在spiders下创建…

Linux驱动应用编程(四)IIC(获取BMP180温度/压力数据)

本文目录 一、基础1. 查看开发板手册&#xff0c;获取可用IIC总线2. 挂载从机&#xff0c;查看从机地址。3. 查看BMP180手册&#xff0c;使用命令读/写某寄存器值。4. 查看BMP180手册通信流程。 二、IIC常用API1. iic数据包/报2. ioctl函数 三、数据包如何被处理四、代码编写流…

《软件定义安全》之二:SDN/NFV环境中的安全问题

第2章 SDN/NFV环境中的安全问题 1.架构安全 SDN强调了控制平面的集中化&#xff0c;从架构上颠覆了原有的网络管理&#xff0c;所以SDN的架构安全就是首先要解决的问题。例如&#xff0c;SDN实现中网络控制器相关的安全问题。 1.1 SDN架构的安全综述 从网络安全的角度&…

Client does not support authentication protocol requested by server

连接mysql数据库报错 Client does not support authentication protocol requested by server; 打开命令行进入mysql mysql -uroot -p ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 123456;FLUSH PRIVILEGES;重新连接成功

P1072 [NOIP2009 提高组] Hankson 的趣味题

Hankson 的趣味题 这题要有思维&#xff01;对。数论&#xff01;最大公约数与最小公倍数。 用LaTex写公式&#xff0c;真的麻烦&#xff01;wcnmd!,,,,,,be---- 于是我用手写了&#xff1a; 大功告成&#xff01;上马&#xff01; #include<cstdio> using namespace …

Python | Leetcode Python题解之第134题加油站

题目&#xff1a; 题解&#xff1a; class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:start, cur_res, total_res 0, 0, 0for i in range(len(gas)):cur_res gas[i] - cost[i]total_res gas[i] - cost[i]if cur_res < 0:cur_r…

MFA 轰炸:苹果用户的攻击目标

一些 Apple (苹果) 用户报告了利用密码重置功能进行的网络钓鱼攻击。 你注意到 iPhone 上的系统提示你输入密码。你点击“不允许”。然后这种情况一次又一次地发生。 在某个时候&#xff0c;你可能会感到恼火或开始恐慌&#xff0c;然后点击“允许”。 然后&#xff0c;你接…

【LeetCode:312. 戳气球+ 动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

创建google cloud storage notification 的权限问题

问题 根据google 的文档&#xff1a; https://cloud.google.com/storage/docs/reporting-changes#command-line 明确表示&#xff0c; 要创建storage notificaiton &#xff0c; 创建者(or service account) 只需要bucket 和 pubsub admin roles 但是实际上我在公司尝试为1个…

《令狐带你阅读JDK源码之简单集合ArrayList》

文章目录 Java简单集合ArrayList继承体系源码解析 总结 大家好哈&#xff0c;欢迎来到令狐小哥本期专栏&#xff0c;这期专栏主要是带着大家阅读JDK源码&#xff0c;我会分几期篇幅来介绍这个jdk源码、会进行剖析、梳理&#xff0c;欢迎大家指正阅读。后面我会配套自己的视频进…

C 语言实现Linux终端显示IP二维码

调试信息&#xff1a;开发者可以在终端生成二维码&#xff0c;包含调试信息或日志数据&#xff0c;便于移动设备扫描和查看。设备配置&#xff1a;物联网设备配置时&#xff0c;通过终端生成配置二维码&#xff0c;扫描后进行设备配置。 Ubuntu/Debian 环境安装二维码库 sudo a…

超详解——python数字和运算——小白篇

目录 1.位运算 2. 常用内置函数/模块 math模块&#xff1a; random模块&#xff1a; decimal模块&#xff1a; 3.内置函数&#xff1a; 总结&#xff1a; 1.位运算 位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符&#xff1a; 按位与&…

python字典应用

""" 字典应用 字典中保存了股票信息&#xff0c;完成下面的操作 1.找出股票价格大于100元的股票并创建一个新的字典 2、找出价格最高和最低的股票对应的股票代码 3.按照股票价格从高到低给股票代码排序 """stocks {AAPL: 191.88,G00G: 1186.96,…

记一次postgresql拼接函数string_agg() 和row_number() 使用

PG两个函数使用需求和简单介绍 需求背景介绍第一个需求背景是这样的需求升级一下接下来讲讲STRING_AGG()基本语法排序 然后我们再说说ROW_NUMBER()基本语法使用 row_number() over (partition by) 进行分组统计使用 row_num限定每组数量 需求背景介绍 第一个需求背景是这样的 …