qt:常见标签操作,倒计时功能,进度条与日历

1.标签常见函数 
函数功能
void setext(const QString &text)设置文本
QString text()const获取文本
void setPixmap(const QPixmap)与Pixmap()const设置和获取图像
void setAlignment(Qt::Alignment alignment)设置对齐(获取和上面一样)
void setWordWrap(bool on)设置是否需要文本对齐(获取和上面一样)
void setTextFormat(Qt::TextFormat format)设置富文本和纯文本
void clear()清除
富文本包含例如超链接的文本
纯文本没有任何格式信息的文本
2.标签常见文本

四种常见的文本:富文本,纯文本,markdown,自动文本的显示

    l1=new QLabel("富文本",this);l2=new QLabel("纯文本",this);l3=new QLabel("markdown",this);l4=new QLabel("自动文本",this);l1->setTextFormat(Qt::RichText);l2->setTextFormat(Qt::PlainText);l3->setTextFormat(Qt::MarkdownText);l4->setTextFormat(Qt::AutoText);l1->setGeometry(300,100,100,50);l2->setGeometry(300,200,100,50);l3->setGeometry(300,300,100,50);l4->setGeometry(300,400,100,50);

 3.标签图片

现在来演示一下图片标签

  p1=new QLabel(this);QPixmap picture("D:/project/p2.jpg");QRect w=this->geometry();p1->setPixmap(picture);p1->setGeometry(0,0,w.width(),w.height());p1->setScaledContents(true);

设置图片拉伸:重写resizeEvent函数

在头文件中声明,该函数继承于它的父类

void resizeEvent(QResizeEvent *event) override;

然后进行重写

void MainWindow::resizeEvent(QResizeEvent *event)
{QMainWindow::resizeEvent(event);p1->setGeometry(0, 0, this->width(), this->height());}

就可以实现图片缩放

4.利用qt designer设置文本框

在打开qtdesigner,然后在左侧选中QLable的父亲QFrame,将framesheet设置为box,就有框了,如果想要Label,同样方法拖动即可

5.右上角对齐,自动换行,缩进,边距

分布以四个标签来展示以上四个功能

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->label->setText("大家好");ui->label->setAlignment(Qt::AlignRight|Qt::AlignTop);ui->label_2->setText("我是c栈算法小辰哥,我是华中农业大学的一名学生,我的学院是信息学院,我的专业是计科");ui->label_2->setWordWrap(true);ui->label_3->setText("我是c栈算法小辰哥,我是华中农业大学的一名学生,我的学院是信息学院,我的专业是计科");ui->label_3->setWordWrap(true);ui->label_3->setIndent(20);ui->label_4->setText("我是c栈算法小辰哥,我是华中农业大学的一名学生,我的学院是信息学院,我的专业是计科");ui->label_4->setMargin(5);
}Widget::~Widget()
{delete ui;
}

6.伙伴机制与快捷键

在标签中写类似&键盘按键的形式,再利用setBuddy绑定一个伙伴按钮,就可以使用Alt+键盘按键进行选中

   ui->label->setText("&A");// ui->label->setAlignment(Qt::AlignRight|Qt::AlignTop);ui->label->setBuddy(ui->radioButton);

 

7.倒计时项目

QLCDNumber是一种专门显示数字的控件,可以利用它来写

属性性质
intValue显示整数
value浮点数(设置二者方法为display)
digitCount显示数字位数
mode

数字显示形式:
- QLCDNumber::Dec:十进制模式,显示常规的十进制数字。
- QLCDNumber::Hex:十六进制模式,以十六进制格式显示数字。
- QLCDNumber::Bin:二进制模式,以二进制格式显示数字。
- QLCDNumber::Oct:八进制模式,以八进制格式显示数字。
只有在十进制模式下才能显示小数点后的内容。
 

segmentStyle

设置显示风格:
QLCDNumber::Flat:平面的显示风格,数字呈现在一个平坦的表面上。
QLCDNumber::Outline:轮廓显示风格,数字具有清晰的轮廓和阴影效果。
QLCDNumber::Filled:填充显示风格,数字被填充颜色并与背景区分开。

不常用:smallDecimalPoint:设置较小的小数点。当启用时,小数点将使用更小的段来表示,节省空间并提高显示密度。

首先用qt designer拖一个QLCDNumber,将初始值设置为20

然后在头文件里搞一个QTimer成员作为计时器,通过start方法启动后,每个一段时间就会触发一次QTimer::timeout信号,可以将它和Weiget::updateTime进行连接,就能实现每次触发timeout都会有updateTime(这个函数要自己写)

然后进行初始化和设置,具体看代码

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);t=new QTimer(this);connect(t,&QTimer::timeout,this,&Widget::updateTime);t->start(2000);
}Widget::~Widget()
{delete ui;
}
void Widget::updateTime()
{int val=ui->lcdNumber->intValue();if(val<=0){t->stop();return;}ui->lcdNumber->display(val-1);
}

t->start表示计时器从2000毫秒也就是20秒开始计算

在遇到类似问题时,要避免循环(Widget构造函数始终无法执行完毕,界面会显示错误),也不能创建一个线程去执行这个操作(任何GUI操作必须在主线程里)

8.进度条项目

QProgessBar就是进度条项目的主要部分

属性特点
minimum最小值,默认为0
maximum最大值,默认100
value当前值
alignment文本在进度条中的对齐方式:
Qt::AlignLeft:左对齐
Qt::AlignRight:右对齐
Qt::AlignCenter:居中对齐
Qt::AlignJustify:两端对齐
extVisible进度条的数字是否可见。设置为 true 时显示进度数值,false 则隐藏。
orientation进度条的方向是水平还是垂直。
Qt::Horizontal:水平方向
Qt::Vertical:垂直方向
invertAppearance是否朝反方向增长进度。如果设为 true,则进度从最大值向最小值递减。
textDirection文本的朝向。影响文本在进度条中的排列方向。
format展示的数字格式:
%p:表示进度的百分比(0-100)
%v:表示进度的数值(0-100)
%m:表示剩余时间(以毫秒为单位)
%t:表示总时间(以毫秒为单位)

为了提高编译速度,可以使用 class 前置声明的方式来尽量减少头文件的包含,方法就是包含一个头文件(#include),这个头文件包含几乎所有的前置声明,如果不进行创建对象等操作,这种方式是可以的

还是老样子,拖一个进度条在qt designer上,设置初始值为24,再用上我们之前的QTimer,然后就可以有一个进度条了

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ti=new QTimer(this);connect(ti,&QTimer::timeout,this,&Widget::updatetime);ti->start(100);
}Widget::~Widget()
{delete ui;
}
void Widget::updatetime()
{int value=ui->progressBar->value();if(value>=100){ti->stop();return;}ui->progressBar->setValue(value+1);
}

注意,改变颜色后字体须水平居中

9.日历项目

QCalendarWidget是主体

属性特点
selectDate当前选中的日期。
minimumDate最小日期,定义用户可以选择的最早日期。
maximumDate最大日期,定义用户可以选择的最晚日期
firstDayOfWeek每周的第一天(也就是日历的第一列)是周几。
gridVisible是否显示表格的边框,默认为 true 显示边框。
selectionMode是否允许选择日期。可以设置为单选或不选。
navigationBarVisible日历上方标题是否显示,默认为 true 显示导航栏。
horizontalHeaderFormat日历上方标题显示的日期格式,控制顶部标题栏的内容。
verticalHeaderFormat日历第一列显示的内容格式,控制左侧垂直标题栏的内容。
dateEditEnabled是否允许日期被编辑,默认为 false 不可编辑。
信号特点
selectionChanged(const QDate&)当选中的日期发生改变时发出。参数是一个 QDate 类型,保存了新的选中日期。
activated(const QDate&)当双击一个有效的日期或者按下回车键时发出。参数是一个 QDate 类型,保存了选中的日期。
currentPageChanged(int, int)当年份月份改变时发出。参数表示改变后的新年份和月份,分别为 int 类型。

 

 

在界面上创建一个 QCalendarWidget 和一个 label,objectName 分别为 calendarWidget,label

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->calendarWidget, &QCalendarWidget::selectionChanged, this, &Widget::changedate);
}
void Widget::changedate()
{QDate d=ui->calendarWidget->selectedDate();qDebug()<<d;ui->label->setText(d.toString());
}
Widget::~Widget()
{delete ui;

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

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

相关文章

STM32MP157A单片机移植Linux驱动

在stm32mp157a单片机移植Linux操作系统&#xff0c;并移植内核驱动&#xff0c;在应用程序中使用3个线程&#xff0c;分别实现控制单片机上3个led流水灯的功能、蜂鸣器控制的功能、风扇控制的功能。 需求整理&#xff1a; 1.驱动程序-->led1.c&#xff0c;led2.c&#xff…

python中格式化输出知识点汇总

在Python中&#xff0c;格式化输出是一种常见的操作&#xff0c;用于将数据以特定的格式展示。以下是Python中格式化输出的主要方法&#xff1a; ### 1. 使用 % 操作符 这是Python早期版本中常用的格式化方法&#xff0c;类似于C语言中的printf。 - **基本语法**&#xff1a;&…

完美转发使用

完美转发的几个例子 例子 1&#xff1a;普通的完美转发 首先&#xff0c;我们先来一个简单的完美转发的例子&#xff0c;展示如何使用 std::forward 来保持传入参数的类型。 #include <iostream> #include <utility> // std::forwardvoid func(int& x) {st…

【Content-Type详解、Postman中binary格式、json格式数据转原始二进制流等】

Content-Type详解、Postman中binary格式、json格式数据转原始二进制流等 背景&#xff1a;postman中如何使用binary格式上传文件 Content-TypeContent-Type的格式由三部分组成&#xff1a;以下是一些常见的Content-Type示例&#xff1a; Postman中 binary格式定义&#xff1a;用…

DeepSeek等大模型功能集成到WPS中的详细步骤

记录下将**DeepSeek功能集成到WPS中**的步骤&#xff0c;以备忘。 1. 下载并安装OfficeAI插件 访问OfficeAI插件下载地址&#xff1a;https://www.office-ai.cn/&#xff0c;下载插件&#xff08;目前只支持windows系统&#xff09;。 注意&#xff0c;有两个插件&#xff0…

MATLAB学习之旅:从入门到基础实践

在当今科技飞速发展的时代,MATLAB作为一款强大的数学软件,犹如一把神奇的钥匙,能够打开众多领域的大门。无论是工程计算、数据分析,还是算法开发、可视化呈现,MATLAB都展现出了无与伦比的魅力。今天,就让我们踏上这段奇妙的MATLAB学习之旅,从最基础的部分开始,逐步探索…

在Ubutu18.04下搭建nfs服务器

在Ubutu18.04下搭建nfs服务器 主要参考这篇博客 Ubuntu18.04下安装NFS详细步骤_乌班图安装nfs-CSDN博客 1.安装NFS服务&#xff1a; 服务器端&#xff1a; sudo apt install nfs-kernel-server

栈,优先级队列,map,set

文章目录 栈题目解析代码 优先级队列题解代码 map题解代码 set题解代码 栈 题目解析 1.先把元素push进栈中&#xff0c;如果栈非空并且栈中的元素按顺序和k相等就出栈&#xff0c;直到栈为空或者k ! sk.top() 代码 #include<iostream> #include<stack> #include&l…

C++ Primer 类的静态成员

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

Java——super

在Java中&#xff0c;super关键字用于引用父类的成员&#xff08;属性、方法或构造器&#xff09;。它在继承关系中非常重要&#xff0c;主要用于以下几种场景&#xff1a; 1. 调用父类的构造器 在子类的构造器中&#xff0c;可以使用super关键字调用父类的构造器。super()必须…

Unity 全局屏幕点击特效

思路&#xff1a; 1、生成一个点击特效实例&#xff0c;每点击屏幕&#xff0c;就调整特效实例的位置并控制特效的显隐状态即可。 2、需要注意要保证在编辑器开发时或手机上运行时都要显示点击效果。 方案一 &#xff08;推荐&#xff09; using UnityEngine; using UnityEn…

什么是业务流程分类框架

业务流程分类框架是一个用于组织和系统化地分类业务流程的结构化方法。它旨在帮助企业理解、管理、分析和改进其运营流程。 可以把它想象成一个图书馆的图书分类系统&#xff0c;帮助快速找到和理解不同类型的书籍。对于业务流程来说&#xff0c;分类框架帮助快速了解不同类型的…

基于springboot校园健康系统的设计与实现(源码+文档)

大家好我是风歌&#xff0c;今天要和大家聊的是一款基于springboot的园健康系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于springboot校园健康系统的设计与实现的主要使用者管理员具有最高的权限&#xff0c;通…

【Leetcode】平衡二叉树

平衡二叉树 题目 思路与代码实现 常规解法&#xff1a; int max(int a,int b){return a>b?a:b;}int maxDepth(struct TreeNode* root) {if(rootNULL)return 0;return 1max(maxDepth(root->left),maxDepth(root->right)); }bool isBalanced(struct TreeNode* root)…

【AI实践】阿里百炼文本对话Agent安卓版搭建

环境&#xff1a;安卓手机运行环境&#xff1b;WinsurfAI编程工具&#xff1b;阿里百炼提前创建Agent应用&#xff1b; 耗时&#xff1a;2小时&#xff1b; 1&#xff0c;新建安卓项目 完成文本输入&#xff0c;并将输入的文字显示出来。 2&#xff0c;安装SDK 参考文档 安…

一文读懂Docker之Docker Compose

目录 一、Docker Compose简介 二、Docker Compose的安装和基本使用 1、Docker Compose的安装 步骤一、下载docker-compose 步骤二、新增可执行权限 步骤三、查看是否安装成功 2、Docker Compose的基本使用 (1)、docker-compose up (2)、docker-compose ps (3)、docke…

WordPress“更新失败,响应不是有效的JSON响应”问题的修复

在使用WordPress搭建网站时&#xff0c;许多人在编辑或更新文章时&#xff0c;可能会遇到一个提示框&#xff0c;显示“更新失败&#xff0c;响应不是有效的JSON响应”。这个提示信息对于不了解技术细节的用户来说&#xff0c;太难懂。其实&#xff0c;这个问题并不复杂&#x…

信息学奥赛一本通 1973 【16NOIP普及组】买铅笔 | 洛谷 P1909 [NOIP 2016 普及组] 买铅笔

【题目链接】 ybt 1973 【16NOIP普及组】买铅笔 洛谷 P1909 [NOIP 2016 普及组] 买铅笔 【题目考点】 1. 简单数学 2. 数组 3. 向上取整 <cmath>中有函数double ceil(double x)&#xff0c;求x向上取整的值。 如果求正整数 ⌈ a b ⌉ \lceil \frac{a}{b} \rceil ⌈…

C++中的.*运算符

看运算符重载的时候&#xff0c;看到这一句 .* :: sizeof ?: . 注意以上5个运算符不能重载。 :: sizeof ?: . 这四个好理解&#xff0c;毕竟都学过&#xff0c;但.*是什么&#xff1f; 于是自己整理了一下 .* 是一种 C 中的运算符&#xff0c;称为指针到成…

【JavaEE进阶】MyBatis通过注解实现增删改查

目录 &#x1f343;前言 &#x1f340;打印日志 &#x1f334;传递参数 &#x1f38b;增(Insert) &#x1f6a9;返回主键 &#x1f384;删(Delete) &#x1f332;改(Update) &#x1f333;查(Select) &#x1f6a9;起别名 &#x1f6a9;结果映射 &#x1f6a9;开启驼…