QT C++(QT控件 QLabel,QLCDNumber,QProgressBar,QCalendarWidget)

文章目录

  • 1. QLabel
  • 2. QLCDNumber
  • 3. QProgressBar
  • 4. QCalendarWidget

1. QLabel

QLabel常见属性:

  1. text:QLabel中的文本
  2. textFormat:文本中的格式
    • Qt::PlainText:纯文本
    • Qt::RichText:富文本,支持html标签
    • Qt::MarkdownText markdown格式
    • Qt::AutoText根据文本内容自动选择文本格式
  3. pixmap:QLabel内包含的图片
  4. scaledContents:true为内容自动拉伸填充,false则不会自动拉伸。一般搭配图片使用。
  5. alignment:对其方式,可以设置水平或竖直方向对齐
  6. wordWrap:true文本内容会自动换行,false文本内容不会自动换行。
  7. indent:设置文本缩进,水平竖直方向都生效。
  8. margin:内部文本和边框之间的边距,indent最多只是两个方向有效,margin上下左右四个方向都有效。
  9. openExternalLinks:是否允许打开一个外部的链接
  10. buddy:给QLabel关联一个伙伴,点击QLabel时激活对应的伙伴。

eg1:

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setTextFormat(Qt::PlainText);ui->label->setText("# <b>纯文本</b>");ui->label_2->setTextFormat(Qt::RichText);ui->label_2->setText("# <b>富文本</b>");ui->label_3->setTextFormat(Qt::MarkdownText);ui->label_3->setText("# Markdown 形式");
}

在这里插入图片描述
eg2:
变化窗口,QLabel里的图片始终铺满整个窗口
Qt中表示用户操作有两类,一个是事件,另一个是信号。
用户改变窗口大小时,Qt会触发resize事件。
这里选择让widget窗口类重写QWidget的resizeEvent虚函数。这样在改变窗口大小时,整个函数就会反复调用resizeEvent。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QRect rect=this->geometry();ui->label->setGeometry(0,0,rect.width(),rect.height());QPixmap pic(":/test.jpg");ui->label->setPixmap(pic);//启用自动拉伸使图片填充满整个labelui->label->setScaledContents(true);
}Widget::~Widget()
{delete ui;
}//event中包含窗口这一时刻的大小
void Widget::resizeEvent(QResizeEvent *event)
{//窗口大小变化时修改label大小ui->label->setGeometry(0,0,event->size().width(),event->size().height());
}

eg3:设置文字格式

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{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(55);//设置边距(四个方向),文字被覆盖掉一部分
}

在这里插入图片描述

eg4:QLabel伙伴属性
在文本中使用&+字符来表示快捷键例如&A则可以通过alt+a来触发
如果绑定了伙伴,可以通过快捷键选中单选按钮和复选按钮。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置伙伴关系ui->label->setBuddy(ui->radioButton);ui->label_2->setBuddy(ui->radioButton_2);
}

在这里插入图片描述

在这里插入图片描述

2. QLCDNumber

QLCDNumber是一个专门用来显示数字的控件,数字样式类似于计算器上的数字。

控件常见属性:

  1. intValue:QLCDNumber显示的数字整数。
  2. value:QLCDNumber显示的浮点数字
  3. digitCount:显示几位数字
  4. mode:数字显示样式。(十进制或十六进制等)
  5. segmentStye:显示风格
    • QLCDNumber::Flat平面的显示风格,数字呈现在一个平坦的表面上。
    • QLCDNumber::Qutline数字有明显的阴影
    • QLCDNumber::Filled填充风格,数字颜色和背景有所区分。
  6. smallDecimalPoint:设置比较小的小数点。

eg:倒计时demo

这里使用定时器来实现。QT中封装了定时器QTimer,这个对象创建会发送timeout信号,可以设置start方法开启定时器,参数中可以设置timeout周期。

结合connect就可以把timeout信号绑定到需要的槽函数中,修改LCDNumber上的数字。

class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handle();QTimer* time=new QTimer(this);private:Ui::Widget *ui;
};Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置LCDNumber初始值ui->lcdNumber->display("10");//将QTimer的timeout信号和槽函数绑定connect(time,&QTimer::timeout,this,&Widget::handle);//启动定时器time->start(1000);//触发定时器的时间,单位是ms
}Widget::~Widget()
{delete ui;
}void Widget::handle()
{
//    qDebug()<<"debug handle";//获取到QLCDNumber控件的数字int num=ui->lcdNumber->intValue();if(num<=0){//停止定时器time->stop();return;}ui->lcdNumber->display(num-1);
}

在这里插入图片描述
需要注意的是:

在QT中,界面是有一个专门的线程去维护更新的(主线程)。
对于GUI来说,内部包含了很多隐藏状态,Qt为了保证修改界面过程中线程安全 。QT禁止了其他线程直接修改界面。所以不可以通过创建多线程的方式来更新QLCDNumber控件的值。

槽函数默认在主线程调用,所以在槽函数中修改界面是可以的。

3. QProgressBar

Qt进度条控件QProgressBar属性

  1. minmum:进度条最小值。
  2. maxmun:进度条最大值
  3. value:进度条当前值
  4. alignment:文本在进度条的对齐方式。
  5. textVisable:进度条数字是否可见
  6. orientation:进度条方向是水平还是竖直
  7. invertAppearance:是否朝着反方向增长进度
  8. textDirection:文本朝向。
  9. format:展示数字格式 (%p表示进度百分比)

eg: 创建一个进度条随着时间增长的进度条,每隔100ms进度条数值+1

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);timer=new QTimer(this);connect(timer,&QTimer::timeout,this,&Widget::handle);timer->start(100);
}void Widget::handle()
{//获取进度条当前值int val=ui->progressBar->value();if(val>=100){timer->stop();return;}ui->progressBar->setValue(val++);
}

4. QCalendarWidget

Qt封装好的日历界面,常见属性如下:

  1. selectData:当前选中的日期。
  2. minimumDate:最小日期
  3. maximnumDate:最大日期
  4. firstDayOfWeek:每周第一天是周几
  5. gridVisible:是否显示表格边框
  6. selectonMode:是否允许选中日期
  7. navigationBarVisible:日历上方标题是否显示
  8. horizontaHeaderFormat:日历上方显示日期格式
  9. verticalHeaderFormat:日历第一列显示内容格式
  10. dateEditEnable:是否允许日期被编辑。

重要信号:

  1. selectionChange:当前选中的日期改变
  2. activated:双击了一个有效日期,或者按下回车键。将选中的日期返回
  3. currentPageChanged:当年份改变时发出,形参后表示改变的新年份和月份。

eg:简单日历使用:显示选中的日期

void Widget::on_calendarWidget_selectionChanged()
{QDate date=ui->calendarWidget->selectedDate();
//    qDebug()<<date;ui->label->setText(date.toString());
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件打开的系统错误分析流程

当用户出现“Open file failed”错误时&#xff0c;手动产生dump文件。 &#xff08;1&#xff09;打开资源管理器&#xff0c;选择AppNameXXX.exe进程&#xff0c;右击鼠标选择“创建转储文件” (2) 生成转储文件 3.获取用户转储文件 4.用Visual studio2015打开dump文件分析…

基于Oauth2.0的OpenFeign远程调用

目录 前言 1.引入openfeign相关依赖 2.开启openFeign远程调用&#xff0c;在启动类头加上注解即可 3. 提供远程调用接口&#xff0c;接口名称必须与controler名称保持一致 4.远程调用关键代码 4.1 注入restTemplate 4.2 配置拦截器 4.3 设置请求头 4.4 获取请求结果 4.5 远…

Hadoop3:Yarn的Tool接口案例

一、需求 依然以wordcount案例为基础&#xff0c;进行开发 我们知道&#xff0c;用hadoop自带的example.jar执行wordcount 命令如下 hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount -D mapreduce.job.queuename…

vue3 滚动条滑动到元素位置时,元素加载

水个文 效果 要实现的思路就是&#xff0c;使用IntersectionObserver 检测元素是否在视口中显示&#xff0c;然后在通过css来进行动画载入。 1.监控元素是否视口中显示 const observer new IntersectionObserver((entries) > {entries.forEach((entry) > {if (entry.i…

【C++】认识使用string类

【C】STL中的string类 C语言中的字符串标准库中的string类string类成员变量string类的常用接口说明成员函数string(constructor构造函数)~string(destructor析构函数)默认赋值运算符重载函数 遍历string下标[ ]迭代器范围for反向迭代器 capacitysizelengthmax_sizeresizecapaci…

Windows Server 2019部署网络负载均衡NLB服务的详细操作步骤

部署前准备 首先需要准备两台Windows Server 2019服务器&#xff0c;虚拟机创建请参考 VMware Workstation安装Windows Server2019系统详细操作步骤_安装windows server 2019操作系统(写出操作过程)-CSDN博客 克隆虚拟机请参考 VMware Workstation克隆虚拟机详细步骤-CSDN博…

滤波算法学习笔记

目录 引言 一、定义 二、分类 三、常见滤波算法 四、应用与优势 五、发展趋势 例程 1. 均值滤波&#xff08;Moving Average Filter&#xff09; 2. 中值滤波&#xff08;Median Filter&#xff09; 3. 高斯滤波&#xff08;Gaussian Filter&#xff09; 4.指数移动…

Redis组建哨兵模式

主172.17.60.131 从172.17.60.130、172.17.60.129 redis部署 [rootlocalhost app]# tar xf redis-6.2.9.tar.gz [rootlocalhost app]# cd redis-6.2.9/ [rootlocalhost redis-6.2.9]# make MALLOClibc [rootlocalhost redis-6.2.9]# make install PREFIX/usr/local/redis…

换根dp,CF 633F - The Chocolate Spree

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 633F - The Chocolate Spree 二、解题报告 1、思路分析 2600的题&#xff0c;但是不算很困难。 先考虑暴力做法&#xff0c;如何得到两条不相交的路径&#xff1f; 枚举删除的边&#xff0c;得到两棵子树…

数据结构_线性表

线性表的定义和特点 线性表是具有相同特性的数据元素的一个有限序列 :线性起点/起始节点 :的直接前驱 :的直接后继 :线性终点/终端节点 n:元素总个数,表长 下标:是元素的序号,表示元素在表中的位置 n0时称为空表 线性表 由n(n>0)个数据元素(结点),组成的有限序列 将…

jenkins在使用pipeline时,为何没有方块形视图

项目场景&#xff1a; 安装完Jenkins时后&#xff0c;通过pipeline创建的项目任务。 问题描述 在立即构建后&#xff0c;没有显示每个阶段的视图。 原因分析&#xff1a; 原因是&#xff0c;刚安装的Jenkins&#xff0c;这个视图不是Jenkins自带的功能&#xff0c;而必须安装…

【计算机网络基础知识】

首先举一个生活化的例子&#xff0c;当你和朋友打电话时&#xff0c;你可能会使用三次握手和四次挥手的过程进行类比&#xff1a; 三次握手&#xff08;Three-Way Handshake&#xff09;&#xff1a; 你打电话给朋友&#xff1a;你首先拨打你朋友的电话号码并等待他接听。这就…

Selenium IDE 的使用指南

Selenium IDE 的使用指南 在自动化测试的领域中&#xff0c;Selenium 是一个广为人知且强大的工具集。而 Selenium IDE 作为其中的一个组件&#xff0c;为测试人员提供了一种便捷且直观的方式来创建和执行自动化测试脚本。 一、Selenium IDE 简介 Selenium IDE 是一个用于录…

二、从多臂老虎机看强化学习

二、从多臂老虎机看强化学习 2.1 多臂老虎机问题2.1.1 问题定义2.2.2 问题建模2.2.3 累积懊悔2.2.4 估计期望奖励 2.2 强化学习中的探索与利用平衡2.3 贪心策略2.4 上置信界算法2.5 汤普森采样算法 2.1 多臂老虎机问题 2.1.1 问题定义 在多臂老虎机(mutil-armed bandit, MAB)问…

深度神经网络语言识别

「AI秘籍」系列课程&#xff1a; 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 使用 DNN 和字符 n-gram 对一段文本的语言进行分类&#xff08;附 Python 代码&#xff09; 资料来源&#xff0c;flaticon&#xff1a;htt…

开发一套java语言的智能导诊需要什么技术?java+ springboot+ mysql+ IDEA互联网智能3D导诊系统源码

开发一套java语言的智能导诊需要什么技术&#xff1f;java springboot mysql IDEA互联网智能3D导诊系统源码 医院导诊系统是一种基于互联网和3D人体的智能化服务系统&#xff0c;旨在为患者提供精准、便捷的医院就诊咨询服务。该系统整合了医院的各种医疗服务资&#xff1b;智慧…

20.【C语言】初识结构体(重要)

定义&#xff1a;由一批数据组合而成的结构型数据 作用&#xff1a;描述复杂对象&#xff0c;创建新的类型 格式&#xff1a; struct 对象 { …… } 介绍. 用法&#xff1a;结构体变量.成员变量 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> struct hotal…

nuxt、vue树形图d3.js

直接上代码 //安装 npm i d3 --save<template><div class"d3"><div :id"id" class"d3-content"></div></div> </template> <script> import * as d3 from "d3";export default {props: {d…

Facebook广告被拒:常见原因以及避免屏蔽的方法

大多数情况下&#xff0c;广告被屏蔽是因为违反了规则&#xff0c;这不仅仅是因为审核因素。有些规则并不明显&#xff0c;也没有在任何地方指定。例如&#xff0c;在广告中使用广告政策中未列出的停用词&#xff1b;审核算法确定照片描绘的模特过于暴露。下面小编将为你介绍Fa…

NET程序开发可能会用到的一些资料文档

NET程序开发使用的一些资料文件&#xff0c;NET高级调试&#xff0c;NET关键技术深入解析&#xff0c;WPF专业编程指南&#xff0c;程序员求职攻略&#xff0c;WPF编程宝典等。 下载链接&#xff1a;https://download.csdn.net/download/qq_43307934/89518582