QT实现电子相册

news2024/9/23 7:20:06

使用带有UI界面的QWidget实现电子相册

1、实现功能

1、定时器的使用,在当前页面的停止总时长。

2、显示当前时间

3、图片的上一张与下一张

4、图片的显示

5、进度展示、一共十张图片、进度条的初始值为10。

2、widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDateTime>
#include <QLabel>
#include <QTimer>
#include<QStringList>
#include<QtDebug>
#include<QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots://自己新增的槽函数是public
    void update_text();
    void update_time();

//UI界面,新增的槽函数是private
private slots:
    void on_down_btn_clicked();

    void on_up_btn_clicked();

private:
    Ui::Widget *ui;
    QTimer *time;//当前时间,定时器对象

    QTimer *timer;//定时器对象,计时器
    QTime *time1;//时间对象,时分秒,计时器

    QStringList imageList;
    int index;
};
#endif // WIDGET_H

3、widget.cpp

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

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

    //1.实现当前时间
    this->time = new QTimer(this);//定时器的实例化
    this->time->setInterval(1000);//设置时长、毫秒
    //信号和槽函数的关联,要在启动之前,先关联好,QT5
    connect(this->time,&QTimer::timeout,this,&Widget::update_time);
    this->time->start();//启动定时器

    //2.实现计时器
    this->timer = new QTimer(this);
    //this->time1 = new QTime(0,0,0);//设计时间的初始值,从零开始,是按秒更新
    this->time1 = new QTime(0,0,0,0);//设计时间的初始值,从零开始,是按毫秒更新
    //this->timer->start(1000);//1000毫秒是1秒,这个是按秒更新
    this->timer->start(1);//多久启动一次,单位是毫秒,这个是按1毫秒更新

    //QT4的连接
    connect(this->timer,SIGNAL(timeout()),this,SLOT(update_text()));//槽函数要另外定义,private slots:

    //3.图片展示
    this->ui->img_lab->setPixmap
            (QPixmap("./image/0.jpg").scaled(this->ui->img_lab->size()));

    imageList  << "./image/0.jpg" << "./image/1.jpg"<< "./image/2.jpg"<< "./image/3.jpg"<< "./image/4.jpg"
               << "./image/5.jpg"<< "./image/6.jpg"<< "./image/7.jpg"<< "./image/8.jpg"<< "./image/9.jpg";
    index=0;

    //4.进度条显示
    this->ui->progressBar->setRange(0,100);//先给进度条设置范围
    this->ui->progressBar->setValue(10);//再设置初始值
}

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

void Widget::update_time()
{
    //获取当前的系统时间
    QString time = QDateTime::currentDateTime().toString("yyyy年MM月dd日 hh:mm:ss");
    //给标签设置时间
    this->ui->loctime_lab->setText(time);
}

void Widget::update_text()
{

    //*this->time1=this->time1->addSecs(1);//秒
    *this->time1=this->time1->addMSecs(1);//毫秒

    //this->ui->counttime_lab->setText(this->time1->toString("hh:mm:ss"));//使用标签完成时间的显示,不太合适

    //使用QLCDNumber完成时间的显示,更符合场景
    //this->ui->lcdNumber->display(this->time1->toString("hh:mm:ss"));//秒
    this->ui->lcdNumber->display(this->time1->toString("hh:mm:ss:zzz"));//毫秒
}

void Widget::on_down_btn_clicked()
{
    if(index<9)
    {
        index = (index + 1) % imageList.size(); // 循环显示图片
        QPixmap pixmap(imageList.at(index));
        pixmap = pixmap.scaled(ui->img_lab->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
        ui->img_lab->setPixmap(pixmap);
        //进度条大小
        this->ui->progressBar->setValue((index+1)*10);
    }
    else
    {
        QMessageBox::warning(this, "提示", "已经是最后一张了");
    }


}


void Widget::on_up_btn_clicked()
{
    if(index>0)
    {
        index = (index - 1) % imageList.size(); // 循环显示图片
        QPixmap pixmap(imageList.at(index));
        pixmap = pixmap.scaled(ui->img_lab->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
        ui->img_lab->setPixmap(pixmap);
        //进度条大小
        this->ui->progressBar->setValue((index+1)*10);

    }
    else
    {
        QMessageBox::information(this, "提示", "已经是第一张了");
    }
    //三种关联方式:QT5、QT4、匿名函数
//    connect(this->time,&QTimer::timeout,this,&Widget::update_time);
//    connect(this->timer,SIGNAL(timeout()),this,SLOT(update_text()));

}



4、widget.ui

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

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

相关文章

Linux 常用命令 ulimit、uptime、curl、scp、dos2unix 提升开发和运维效率

Linux 常用命令&#xff1a;从资源限制到网络传输 一、前导&#xff1a;概述二、ulimit 用户资源三、uptime 机器启动时间负载四、curl 命令五、scp 远程拷贝六、dos2unix和unix2dos命令七、总结 一、前导&#xff1a;概述 本系列主要讲解Linux运行时命令&#xff0c;包括网络…

pycharm中opencv-python和opencv-contrib安装及测试相机链接取图

1.去到https://pypi.org/中查找opencv-python 和opencv-contrib-python当前下载的是4.10.0 2.分别下载。 3.下载完后&#xff0c;打开pycharm&#xff0c;然后新建一个项目&#xff0c;项目中新建一个main.py文件&#xff0c;设置项目配置环境为当前python环境&#xff0c; …

常用排序算法(上)

目录 前言&#xff1a; 1.排序的概念及其运用 1.1排序的概念 1.2排序运用 1.3 常见的排序算法 2.常见排序算法的实现 2.1 堆排序 2.1 1 向下调整算法 2.1 2 建堆 2.1 3 排序 2.2 插入排序 2.1.1基本思想&#xff1a; 2.1.2直接插入排序&#xff1a; 2.1.3 插…

JS设计模式之“神奇的魔术师” - 简单工厂模式

引言 在JavaScript开发中&#xff0c;我们经常需要创建和管理各种对象&#xff0c;而简单工厂模式就是一种最简单的用来创建对象的设计模式。 简单工厂模式通过一个工厂类来创建相似的对象&#xff0c;而无需直接使用具体类来实例化对象。这样可以将对象的创建过程与使用过程…

Zabbix 配置win系统登录和钉钉告警

1、配置win监控项 win系统日志ID 4624是成功登录 4625是失败登录 登录成功日志&#xff1a; eventlog[Security,,"Success Audit",,^4624$,,skip] 登录失败日志&#xff1a; eventlog[Security,,"Success Audit",,^4625$,,skip] 要监控登录的日志&…

音视频开发之旅(90)-Vision Transformer论文解读与源码分析

目录 1.背景和问题 2.Vision Transformer(VIT)模型结构 3.Patch Embedding 4.实现效果 5.代码解析 6.资料 一、背景和问题 上一篇我们学习了Transformer的原理&#xff0c;主要介绍了在NLP领域上的应用&#xff0c;那么在CV(图像视频)领域该如何使用&#xff1f; 最直观…

在Diffusers中使用LoRA微调模型

在浏览稳定扩散模型共享网站&#xff08;例如 CivitAI&#xff09;时&#xff0c;你可能遇到过一些标记为“LoRA”的自定义模型。“LoRA”到底是什么—它与典型的模型检查点有何不同&#xff1f;LoRA 可以与Diffusers包一起使用吗&#xff1f;在本文中&#xff0c;我们将回答这…

计算机视觉基础 2. 滤波器

1. 简介 模糊滤波器是低通滤波器。它们从图像中去除高空间频率内容&#xff0c;只留下低频空间分量。结果是图像失去了细节&#xff0c;看起来很模糊。图像模糊在计算机图形学和计算机视觉中有许多应用。它可用于降低噪声&#xff08;如图17.1所示&#xff09;&#xff0c;揭示…

代码时光机:Git基础速成

hello,家人们,今天咱们来介绍Git以及Git相关的操作,好啦,废话不多讲,开干. 1:Git初识 在介绍Git前,博主首先讲一个小故事. 我们学计算机的小伙伴们,在学校里头都有实验课,那么老师呢就会要求我们写实验报告并且要求我们交上去给老师检查.有一个学计算机的大学生,名字叫张三,然…

Datawhale X 李宏毅苹果书 AI夏令营-深度学习进阶task2:自适应学习率,分类

1.自适应学习率 临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。很多时候训练网络&#xff0c;损失不再下降&#xff0c;不是因为到了临界点&#xff0c;而是可能在山谷之间不停震荡。 以下为不同学习率对训练的影响&#xff0c;下图中左右平缓&#xff0c;上下陡…

C语言 | Leetcode C语言题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; struct hashTable {int key;int val;UT_hash_handle hh; };int firstUniqChar(char* s) {struct hashTable* position NULL;int que[26][2], left 0, right 0;int n strlen(s);for (int i 0; i < n; i) {int ikey s[i];struct has…

火语言RPA流程组件介绍--浏览选择文件夹

&#x1f6a9;【组件功能】&#xff1a;打开浏览文件夹选择对话框 配置预览 配置说明 对话框标题 支持T或# 打开浏览文件夹对话框时显示的标题。 默认打开文件夹 支持T或# 打开浏览文件夹对话框时&#xff0c;默认打开此文件夹。 取消后终止流程 “是”、“否”2种供选择…

一篇详细介绍常用第三方库的教程

作者&#xff1a;郭震 我们之前介绍过如何安装Python的各种常用第三方库.这些库为程序员提供了许多功能,能够大大简化我们的开发工作.本文将为你介绍一些最常用的第三方库,帮助你更好地理解它们的用途及基本概念. 1. NumPy NumPy是一个强大的科学计算库.它提供了多维数组对象以…

09.定时器02

#include "reg52.h"sbit led P3^6;void delay10ms() { //1. 配置定时器0工作模式位16位计时TMOD 0x01;//2. 给初值&#xff0c;定一个10ms出来TL00x00;TH00xDC;//3. 开始计时TR0 1;TF0 0; } void main() {int cnt 0;led 1;while(1){if(TF0 1)//当爆表的时候&a…

Git之2.9版本重要特性及用法实例(五十八)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列…

非关系型数据库 Redis 的安装与配置

文章目录 一 . CentOS 7 安装 Redis【版本选择说明】一 . 安装 Redis二 . 配置 Redis2.1 针对可执行程序设置符号链接2.2 针对配置文件设置符号链接2.3 修改配置文件2.3.1 设置 IP 地址2.3.2 关闭保护模式2.3.3 启动守护进程2.3.4 设置工作目录2.3.5 设置日志目录 三 . 启动 Re…

Apache SeaTunnel Zeta 引擎源码解析(一)Server端的初始化

引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本&#xff0c;围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程&#xff0c;希望通过这篇文档&#xff0c;对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文章将会分成三篇&#xff0c;从以下方向给大家介绍&am…

掌握数据利器:AWS Glue与数据基盘概览

引言 随着数字化进程的不断推进&#xff0c;企业现在能够积累并分析海量且多样化的数据。这一优势使得许多企业开始采用数据驱动型经营&#xff08;即基于数据的经营策略&#xff09;。通过基于数据的客观判断&#xff0c;企业及其管理者可以获得诸多好处。 然而&#xff0c;…

DeepMind 机器人学习打乒乓球,朝着「专业运动员水平的速度和性能」发展

这几天全球各界最火热的话题非奥运会莫属&#xff0c;而其中乒乓球比赛更是引起了互联网的讨论热潮&#xff0c;无论是欢呼也好、争议也罢&#xff0c;在现实世界人类的乒乓球大赛风生水起的同时&#xff0c;AI已经偷偷在乒乓球上“出师”了—— ——DeepMind近日发布一项新工作…

机器学习 第7章 贝叶斯分类器

目录 7.1 贝叶斯决策论7.2 极大似然估计7.3 朴素贝叶斯分类器7.4 半朴素贝叶斯分类器7.5 贝叶斯网7.5.1 结构7.5.2 学习7.5.3 推断 7.6 EM算法 7.1 贝叶斯决策论 对分类任务来说&#xff0c;在所有相关概率都己知的理想情形下&#xff0c;贝叶斯决策论考虑如何基于这些概率和误…