QT:控件属性及常用控件(2)-----按钮类控件及显示类控件

news2025/1/7 22:41:01

在这里插入图片描述

文章目录

  • QT关于qrc一个蛋疼的问题
  • 一、按钮类控件
    • 1.PushButton
      • 1.1 给按钮加图标
      • 1.2 给按钮加快捷键
    • 2.RadioButtion
      • 2.1 单选题
      • 2.2 关于状态
      • 2.3 多组单选
    • 3.Check Box
    • 4.Tool Button
  • 二、显示类控件
    • 1.Lable
      • 1.1 文本、图片显示
      • 1.2 Label格式
      • 1.3 设置伙伴(绑定伙伴关系)
    • 2.LCDNumber
      • 2.1 使用槽函数连接的方法实现倒计时
      • 2.2 ※※重要 使用线程的方法实现倒计时(不可行)
    • 3.ProgressBar
    • 4.Calendar Widget
  • 总结


QT关于qrc一个蛋疼的问题

在这里插入图片描述

一、按钮类控件

1.PushButton

使⽤QPushButton 表⽰⼀个按钮.这也是当前我们最熟悉的⼀个控件了.
QPushButton 继承⾃QAbstractButton 。这个类是⼀个抽象类.是其他按钮的⽗类.
QAbstractButton 中,和QPushButton 相关性较⼤的属性。

属性说明
text按钮中的⽂本
icon按钮中的图标
iconSize按钮中图标的尺⼨
shortCut按钮对应的快捷键
autoRepeat按钮是否会重复触发.当⿏标左键按住不放时,如果设为true,则会持续产⽣⿏标点击事件;如果设为false,则必须释放⿏标,再次按下⿏标时才能产⽣点击事件.(相当于游戏⼿柄上的"连发"效果)
autoRepeatDelay重复触发的延时时间.按住按钮多久之后,开始重复触发.
autoRepeatInterval重复触发的周期.

1.1 给按钮加图标

在这里插入图片描述

1.2 给按钮加快捷键

先利用qrc设置好图片

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

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

    //设置按钮的图标
    ui->pushButton_target->setIcon(QIcon(":image/kun.png"));
    ui->pushButton_target->setIconSize(QSize(200,200));
    ui->pushButton_up->setIcon(QIcon(":image/up.png"));
    ui->pushButton_up->setIconSize(QSize(80,80));
    ui->pushButton_down->setIcon(QIcon(":image/down.png"));
    ui->pushButton_down->setIconSize(QSize(80,80));
    ui->pushButton_right->setIcon(QIcon(":image/right.png"));
    ui->pushButton_right->setIconSize(QSize(80,80));
    ui->pushButton_left->setIcon(QIcon(":image/left.png"));
    ui->pushButton_left->setIconSize(QSize(80,80));
    //设置快捷键方法1,容易写错
    //ui->pushButton_up->setShortcut(QKeySequence("w"));            //QKeySequence("ctrl+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_Up));        //QKeySequence(Qt::CTRL+Qt::Key_Up));
    ui->pushButton_down->setShortcut(QKeySequence(Qt::Key_Down));
    ui->pushButton_left->setShortcut(QKeySequence(Qt::Key_Left));
    ui->pushButton_right->setShortcut(QKeySequence(Qt::Key_Right));

    //开启鼠标连发功能(键盘的连发默认是支持的)
    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()
{
    //获取target的位置
    QRect rect=ui->pushButton_target->geometry();
    //点击时设置新的位置
    ui->pushButton_target->setGeometry(rect.x(),rect.y()-5,rect.width(),rect.height());
}

void Widget::on_pushButton_left_clicked()
{
    //获取target的位置
    QRect rect=ui->pushButton_target->geometry();
    //点击时设置新的位置
    ui->pushButton_target->setGeometry(rect.x()-5,rect.y(),rect.width(),rect.height());
}

void Widget::on_pushButton_right_clicked()
{
    //获取target的位置
    QRect rect=ui->pushButton_target->geometry();
    //点击时设置新的位置
    ui->pushButton_target->setGeometry(rect.x()+5,rect.y(),rect.width(),rect.height());
}

void Widget::on_pushButton_down_clicked()
{
    //获取target的位置
    QRect rect=ui->pushButton_target->geometry();
    //点击时设置新的位置
    ui->pushButton_target->setGeometry(rect.x(),rect.y()+5,rect.width(),rect.height());
}

在这里插入图片描述

2.RadioButtion

QRadioButton 是单选按钮.可以让我们在多个选项中选择⼀个.
作为QAbstractButton 和QWidget 的⼦类,上⾯介绍的属性和⽤法,对于QRadioButton同样适⽤.
QAbstractButton 中和QRadioButton 关系较⼤的属性

属性说明
checkable是否能选中
checked是否已经被选中.checkable是checked的前提条件.
autoExclusive是否排他.选中⼀个按钮之后是否会取消其他按钮的选中.对于QRadioButton 来说默认就是排他的.

2.1 单选题

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //添加默认选项
    //ui->radioButton_1->setChecked(true);
    //ui->label->setText("你最喜欢的食物:水果");
    //禁用选项(屎不能吃)
    //ui->radioButton_5->setCheckable(false);//只是能让按钮不被选中,但是点击可以响应!
    ui->radioButton_5->setEnabled(false);
    //ui->radioButton_5->setDisabled(true);
}

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

void Widget::on_radioButton_1_clicked()
{
    //点击后更新内容
    ui->label->setText("你最喜欢的食物:水果");
}

void Widget::on_radioButton_2_clicked()
{
    //点击后更新内容
    ui->label->setText("你最喜欢的食物:蔬菜");
}

void Widget::on_radioButton_3_clicked()
{
    //点击后更新内容
    ui->label->setText("你最喜欢的食物:肉类");
}

void Widget::on_radioButton_4_clicked()
{
    //点击后更新内容
    ui->label->setText("你最喜欢的食物:海鲜");
}

void Widget::on_radioButton_5_clicked()
{
    //点击后更新内容
    ui->label->setText("你最喜欢的食物:屎");
}

在这里插入图片描述

2.2 关于状态

在这里插入图片描述

• clicked 是⼀次⿏标按下+⿏标释放触发的.
• pressed 是⿏标按下触发的.
• released 是⿏标释放触发的.
• toggled 是checked属性改变时触发的.(连续点击不会触发,必须切换才能触发)

2.3 多组单选

在这里插入图片描述

3.Check Box

QCheckBox 表⽰复选按钮.可以允许选中多个.(其他功能和radiobutton差不多!!)
和QCheckBox 最相关的属性也是checkable和checked,都继承自QAbstractButton.
⾄于checkable 和checked ,都是继承⾃QCheckBox 独有的属性tristate ⽤来实现"三态复选框".
在这里插入图片描述

4.Tool Button

QToolButton 的⼤部分功能,和QPushButton 是⼀致的.但是QToolButton 主要应⽤在⼯具栏,菜单等场景.
在这里插入图片描述

二、显示类控件

1.Lable

QLabel 可以⽤来显⽰⽂本和图⽚.

属性说明
textQLabel 中的⽂本
textFormat⽂本的格式.
pixmapQLabel内部包含的图⽚.
scaledContents设为true表⽰内容⾃动拉伸填充QLabel 。设为false则不会⾃动拉伸
alignment对⻬⽅式.
wordWrap设为true内部的⽂本会⾃动换⾏.设为false则内部⽂本不会⾃动换⾏.
indent设置⽂本缩进.⽔平和垂直⽅向都⽣效.
margin内部⽂本和边框之间的边距.不同于于indent,但是是上下左右四个⽅向都同时有效.⽽indent最多只是两个⽅向有效(具体哪两个⽅向有效取决于alignment).
openExternalLinks是否允许打开⼀个外部的链接.
buddy给QLabel关联⼀个"伙伴",这样点击QLabel时就能激活对应的伙伴.

1.1 文本、图片显示

纯文本、富文本、markdown文本显示:

在这里插入图片描述

图片显示:

收先第一步还是引入qrc文件

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //获取窗口尺寸
    QRect windowRect = this->geometry();
    ui->label->setGeometry(0,0,windowRect.width(),windowRect.height());
    //设置图标
    QPixmap pixmap(":/kun.png");
    ui->label->setPixmap(pixmap);
    //自动拉伸
    ui->label->setScaledContents(true);

}

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

//不断获取窗口信息
void Widget::resizeEvent(QResizeEvent *event)
{
    qDebug() << event->size();
    ui->label->setGeometry(0,0,event->size().width(),event->size().height());
}

*对于resizeEvent(QResizeEvent event):

此处的resizeEvent 函数我们没有⼿动调⽤,但是能在窗⼝⼤⼩变化时被⾃动调⽤.

这个过程就是依赖C++中的多态来实现的.Qt框架内部管理着QWidget对象表⽰窗⼝.在窗⼝⼤⼩发⽣改变时,Qt就会⾃动调⽤resizeEvent函数.

但是由于实际上这个表⽰窗⼝的并⾮是QWidget,⽽是QWidget的⼦类,也就是我们⾃⼰写的Widget.此时虽然是通过⽗类调⽤函数,但是实际上执⾏的是⼦类的函数(也就是我们重写后的resizeEvent).

此处属于是多态机制的⼀种经典⽤法.通过上述过程,就可以把⾃定义的代码,插⼊到框架内部执⾏.相当于"注册回调函数".

在这里插入图片描述

1.2 Label格式

  ui->setupUi(this);
    //设置对其格式
    ui->label->setText("对其格式教学!");
    ui->label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);//水平对齐和数值对其,当然还要其他各种对齐方式
    //设置自动换行
    ui->label_2->setText("这是自动换行教学!!这是自动换行教学!!这是自动换行教学!!奥奥这是自动换行教学!!");
    ui->label_2->setWordWrap(true);
    //设置缩进
    ui->label_3->setText("这是缩进教学");
    ui->label_3->setIndent(50);//缩进50像素(并不是首行缩进,换行了后续的行也会缩进)
    //设置边距
    ui->label_4->setText("这是设置边距的教学");
    ui->label_4->setMargin(10);//四个方向都有的边距(上下左右)

在这里插入图片描述

1.3 设置伙伴(绑定伙伴关系)

QT中把label中的⽂本设置为"快捷键&A"这样的形式.
其中&后⾯跟着的字符,就是快捷键.
可以通过alt+A的⽅式来触发该快捷键.
绑定伙伴关系之后,就可以通过快捷键来选择!!
在这里插入图片描述

2.LCDNumber

QLCDNumer 是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果.

属性说明
intValueQLCDNumber显⽰的数字值(int).
valueQLCDNumber显⽰的数字值(double).和intValue是联动的.例如给value设为1.5,intValue的值就是2.另外,设置value和intValue的⽅法名字为display,⽽不是setValue或者setIntValue
digitCount显⽰⼏位数字.
mode数字显⽰形式(二进制、十六进制、八进制等等)
segmentStyle设置显⽰⻛格(平面风格、轮廓风格、填充显示风格等等).
smallDecimalPoint设置⽐较⼩的⼩数点.

2.1 使用槽函数连接的方法实现倒计时

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //设置初始值
    ui->lcdNumber->display(50);
    //创建一个QTimer实例
    timer = new QTimer(this);
    //把QTimer的timeout信号和槽函数进行连接
    connect(timer,&QTimer::timeout,this,&Widget::handle);
    //启动定时器,参数是触发周期,单位是ms
    timer->start(1000);

}

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

void Widget::handle()
{
    //拿到LCDNumber的数字
    int value = ui->lcdNumber->intValue();
    if(value <= 0)
    {
        //数字到0停止
        timer->stop();
        return;
    }
    ui->lcdNumber->display(value-1);
}

QTimer 表⽰定时器.通过start⽅法启动定时器之后,就会每隔⼀定周期,触发⼀次QTimer::timeout 信号.
使⽤connect 把QTimer::timeout 信号和次触发Widget::updateTime连接起来,意味着每QTimer::timeout 都会执⾏Widget::updateTime
在这里插入图片描述

2.2 ※※重要 使用线程的方法实现倒计时(不可行)

在这里插入图片描述

3.ProgressBar

使⽤QProgressBar 表⽰⼀个进度条.

属性说明
minimum进度条最⼩值
maximum进度条最⼤值
value进度条当前值
alignment⽂本在进度条中的对⻬⽅式(左对齐,右对齐,居中对齐,两端对齐等)
textVisible进度条的数字是否可⻅…
orientation进度条的⽅向是⽔平还是垂直.
invertAppearance是否是朝反⽅向增⻓进度.
textDirection⽂本的朝向.
format展⽰的数字格式(%p百分比,%v数值,%m剩余时间,%t总时间).

书写进度条

每过100ms,进度条数值+1.
在这里插入图片描述
在这里插入图片描述

4.Calendar Widget

QCalendarWidget 表⽰⼀个"⽇历"

属性说明
selectDate当前选中的⽇期
minimumDate最⼩⽇期
maximumDate最⼤⽇期
firstDayOfWeek每周的第⼀天(也就是⽇历的第⼀列)是周⼏.
gridVisible是否显⽰表格的边框
selectionMode是否允许选择⽇期
navigationBarVisible⽇历上⽅标题是否显⽰
horizontalHeaderFormat⽇历上⽅标题显⽰的⽇期格式
verticalHeaderFormat⽇历第⼀列显⽰的内容格式
dateEditEnabled是否允许⽇期被编辑
信号说明
selectionChanged(constQDate&)当选中的⽇期发⽣改变时发出
activated(const QDate&)当双击⼀个有效的⽇期或者按下回⻋键时发出,形参是⼀个QDate类型,保存了选中的⽇期
currentPageChanged(int, int)当年份⽉份改变时发出,形参表⽰改变后的新年份和⽉份

用法也非常简单,这里转为槽函数用的是selectionChanged,它的作用是当用户改变日历的选中日期时触发。

在这里插入图片描述

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

逆向入门(2)C篇-基础知识

C基础 1、在C中&#xff0c;函数的变量是从右往左传递的&#xff0c;也就是test(x,y)&#xff0c;先传入y&#xff0c;再传x。 2、变量的分类&#xff1a; &#xff08;1&#xff09;全局变量。在编译的时候就已经确定了内存地址和宽度&#xff0c;变量名就是内存地址的别名…

【C语言】_assert断言

目录 1. assert功能 2. 使用assert判指针有效性 3. assert的参数 4. NDEBUG宏与assert机制的关闭 5. Debug版本与Release版本 1. assert功能 assert ( ) 是assert.h头文件定义的宏&#xff0c;用于在运行时确保程序符合指定条件&#xff1a; 如果不符合&#xff08;条件…

在Unity中用Ab包加载资源(简单好抄)

第一步创建一个Editor文件夹 第二步编写BuildAb&#xff08;这个脚本一点要放在Editor中因为这是一个编辑器脚本&#xff0c;放在其他地方可能会报错&#xff09; using System.IO; using UnityEditor; using UnityEngine;public class BuildAb : MonoBehaviour {// 在Unity编…

【可实战】Bug的判定标准、分类、优先级、定位方法、提交Bug(包含常见面试题)

一、Bug相关概念 &#xff08;一&#xff09;bug判定标准 &#xff08;二&#xff09;常见 Bug 分类 &#xff08;三&#xff09;bug优先级 1.bug严重程度与优先级的关系 有些很严重的Bug&#xff0c;只在极端的条件下才出现&#xff0c;用户碰到的概率很低&#xff0c;这种情…

C语言:调试的概念和调试器的选择

所谓调试&#xff08;Dubug&#xff09;&#xff0c;就是跟踪程序的运行过程&#xff0c;从而发现程序的逻辑错误&#xff08;思路错误&#xff09;&#xff0c;或者隐藏的缺陷&#xff08;Bug&#xff09;。 在调试的过程中&#xff0c;我们可以监控程序的每一个细节&#xff…

30分钟搭建 Typecho 个人博客教程

Typecho是一款PHP博客程序&#xff0c;相比于WordPress&#xff0c;Typecho显得更加的轻量级和简洁。现在越来越多的人倾向于用Typecho来搭建个人博客——众所周知&#xff0c;能跑WordPress的机器都不便宜。 Typecho是一款国人团结打造的开源博客系统&#xff0c;和WordPress…

【软考网工笔记】计算机基础理论与安全——网络安全

病毒 Melissa 宏病毒 1. 是一种快速传播的能够感染那些使用MS Word 97 和MS Office 2000 的计算机宏病毒。 2. 前面有**Macro** 表示这是宏病毒&#xff1b; 3. 宏病毒可以感染后缀为.xls的文件&#xff1b;Worm 蠕虫病毒 1. 通常是通过网络或者系统漏洞进行传播。 2. 利用信…

数字图像处理 三 空间滤波

空间滤波是一种图像处理技术&#xff0c;它通过对图像像素及其邻域进行运算&#xff0c;利用均值&#xff0c;高斯&#xff0c;梯度&#xff0c;拉普拉斯等线性滤波和中值&#xff0c;最大最小&#xff0c;双边滤波等非线性滤波改变像素值&#xff0c;实现图像的平滑&#xff0…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新&#xff0c;就想着更新看看&#xff08;能否冲掉问题&#xff09;4、更新没成功&#xff0c;自动重启电脑5、风险文件&#xff08;好家伙命名还挺规范&#xff0c;一看名字就知道出问题了&#xff09;6、开机有一些注册表…

ES-深度分页问题

ES分页查询基本语法 # 分页 GET /hotel/_search {"query": {"match_all": {}},"sort": [{"price": "asc"}],"from": 0,"size": 10 }上面是ES查询hotel这个索引库的语句&#xff0c;其中做了分页查询&a…

弹性云服务器ECS“规格”

规格详细资料&#xff1a;规格清单&#xff08;x86&#xff09;_弹性云服务器 ECS_华为云 通用计算型 各规格详细介绍请参见通用计算型。 规格名称 计算 磁盘类型 网络 通用计算型X1 CPU/内存配比&#xff1a;自定义vCPU数量范围&#xff1a;1-16处理器&#xff1a;第三…

connect to host github.com port 22: Connection timed out 的解决方法

原因是 Github 被 GFW 屏蔽了。 Windows 系统&#xff0c;打开 C:\Windows\System32\drivers\etc&#xff0c;复制其中的 hosts 文件至桌面&#xff0c;用文本编辑器或者其他工具打开。 复制以下内容进去&#xff1a; 140.82.114.4 github.com 151.101.1.6 github.global.ss…

22408操作系统期末速成/复习(考研0基础上手)

第一部分:计算题&#xff1a; 考察范围&#xff1a;&#xff08;标红的是重点考&#xff09; 第一章&#xff1a;CPU利用率&#xff1a; 第二章&#xff1a; 进程调度算法&#xff08;需要注意不同调度算法的优先级和题目中给出的是否可以抢占【分为可抢占和不可抢占&#xff…

html本地字符串处理工具|去重、分割、求交集、求并集

源代码&#xff08;保存到本地文件命名为 xxx.html&#xff0c;用浏览器打开该文件即可使用&#xff09; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>数据处理</title><style>inpu…

基于Python的考研学习系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

计算机网络 —— 网络编程(TCP)

计算机网络 —— 网络编程&#xff08;TCP&#xff09; TCP和UDP的区别TCP (Transmission Control Protocol)UDP (User Datagram Protocol) 前期准备listen &#xff08;服务端&#xff09;函数原型返回值使用示例注意事项 accpect &#xff08;服务端&#xff09;函数原型返回…

Vue 项目自动化部署:Coding + Jenkins + Nginx 实践分享

前言 本文详细记录如何使用 Coding (以 Jenkinsfile 为核心) 和 Nginx 部署 Vue 项目&#xff0c;包含完整流程、配置细节及注意事项&#xff0c;为开发者提供一个高效的实践参考。 准备工作 这里借用一个优秀的开源项目做演示&#xff1a;芋道源码/yudao-ui-admin-vue2。 以…

Mysql运维利器之备份恢复-xtrabackup 安装

1、插件下载 xtrabackup 下载地址 找到自己mysql版本对应得 插件版本下载 2、执行安装命令 yum localinstall percona-xtrabackup-80-8.0.26-18.1.el7.x86_64.rpm 安装完毕&#xff01;查看版本信息 xtrabackup --version 安装完毕&#xff01;&#xff01;&#xff01;

【JAVA】神经网络的基本结构和前向传播算法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

ip属地的信息准确吗?ip归属地不准确怎么办

在数字化时代&#xff0c;IP属地信息成为了我们日常生活中不可或缺的一部分。在各大社交媒体平台上&#xff0c;IP属地信息都扮演着重要的角色。然而&#xff0c;随着技术的不断进步和网络的复杂性增加&#xff0c;IP属地信息的准确性问题也日益凸显。那么&#xff0c;IP属地信…