QT圖片輪播器(QT實操學習2)

1.項目架構

1.UI界面

2.widget.h?

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>#define TIMEOUT   1 * 1000
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);virtual void timerEvent(QTimerEvent *event);~Widget();private slots:void on_startButton_clicked();void on_pardonButton_clicked();private:Ui::Widget *ui;int myTimerId;int picId;
};
#endif // WIDGET_H

3.main.cpp?

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

3.widget.cpp?

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);picId = 2;QPixmap pix("/data/wzh/QT/Qt_1/picture/1.png");ui->label->setPixmap(pix);
}Widget::~Widget()
{delete ui;
}void Widget::on_startButton_clicked()
{//開啟定時器,返回定時器編號myTimerId = this->startTimer(TIMEOUT);}void Widget::timerEvent(QTimerEvent *event)
{if (event->timerId() != myTimerId)return;QString path("/data/wzh/QT/Qt_1/picture/");path += QString::number(picId);path += ".png";QPixmap pix(path);ui->label->setPixmap(pix);picId++;if (5 == picId)picId = 1;
}void Widget::on_pardonButton_clicked()
{this->killTimer(myTimerId);
}

2. 程序講解

1. 初始化界面

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);picId = 2;QPixmap pix("/data/wzh/QT/Qt_1/picture/1.png");ui->label->setPixmap(pix);
}
  • 界面設置:構造函數中初始化UI組件。

  • 圖片加載:使用QPixmap加載第一張圖片并顯示在QLabel上。

  • 初始圖片ID:設置picId為2,表示下一張圖片的ID。

2. 啟動定時器

void Widget::on_startButton_clicked()
{// 開啟定時器,返回定時器編號myTimerId = this->startTimer(TIMEOUT);
}
  • 定時器啟動:點擊“開始”按鈕時,調用startTimer方法啟動定時器。

  • 定時器IDstartTimer返回定時器的唯一標識符,用于后續的定時器事件處理。

3. 定時器事件處理

void Widget::timerEvent(QTimerEvent *event)
{if (event->timerId() != myTimerId)return;QString path("/data/wzh/QT/Qt_1/picture/");path += QString::number(picId);path += ".png";QPixmap pix(path);ui->label->setPixmap(pix);picId++;if (5 == picId)picId = 1;
}
  • 事件過濾:檢查事件的定時器ID是否與我們啟動的定時器ID匹配。

  • 圖片路徑構造:根據picId構造圖片的完整路徑。

  • 圖片加載與顯示:使用QPixmap加載圖片并更新QLabel顯示。

  • 圖片ID循環picId遞增,當達到5時重置為1,實現循環播放。

4. 停止定時器

void Widget::on_pardonButton_clicked()
{this->killTimer(myTimerId);
}
  • 停止定時器:點擊“停止”按鈕時,調用killTimer方法停止定時器。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76009.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76009.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76009.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【HTML5】02-列表 + 表格 + 表單

本文介紹 列表、表格、表單的具體使用。 目錄 1. 列表 1.1 無序列表 1.2 有序列表 1.3 定義列表 2. 表格 2.1 基本使用 2.2 表格結構標簽 2.3 合并單元格 3. 表單 3.1 input標簽 3.2 input 標簽占位文本 3.3 單選框 3.4 上傳文件 3.5 多選框 3.6 下拉菜單 3.7…

【數據結構】導航

【數據結構】-CSDN博客 【數據結構】next數組、nextval數組-CSDN博客

開源項目里的 autogen.sh 是做什么?

./autogen.sh 是一個在基于 Autotools 構建系統的開源項目中常見的腳本。它的主要作用是準備構建環境&#xff0c;生成后續編譯所需的關鍵文件。 更具體地說&#xff0c;./autogen.sh 通常會執行以下操作&#xff1a; 檢查構建工具: 它會檢查系統中是否安裝了構建項目所需的工…

RabbitMQ高級特性--發送方確認

目錄 1. confirm確認模式 1.配置RabbitMQ 2.設置確認回調邏輯并發送消息 2.Return退回模式 1.配置RabbitMQ 2.設置返回回調邏輯并發送消息 在使用RabbitMQ的時候, 可以通過消息持久化來解決因為服務器的異常崩潰而導致的消息丟失, 但是還有?個問題, 當消息的生產者將消息發送出…

Python的ASGI Web 服務器之uvicorn

文章目錄 什么是uvicornUvicorn 和 uWSGI 對比區別安裝 Uvicorn使用示例 什么是uvicorn 官網https://www.uvicorn.org/ Uvicorn 是一個用于 Python 的 ASGI Web 服務器實現。 Until recently Python has lacked a minimal low-level server/application interface for async…

MongoDB 創建數據庫

MongoDB 創建數據庫 引言 MongoDB 是一款高性能、可擴展的 NoSQL 數據庫&#xff0c;廣泛應用于大數據領域。在 MongoDB 中&#xff0c;創建數據庫是進行數據存儲的第一步。本文將詳細介紹 MongoDB 數據庫的創建方法&#xff0c;包括手動創建和自動創建兩種方式。 MongoDB 數…

并發編程之最小化共享

文章目錄 **什么是「最小化共享」&#xff1f;****為什么要最小化共享&#xff1f;****如何實現最小化共享&#xff1f;****1. 線程局部存儲&#xff08;Thread-Local Storage&#xff09;****2. 消息傳遞&#xff08;Message Passing&#xff09;****3. 不可變數據&#xff08…

通信之光纖耦合器

以下是關于光纖耦合器的詳細介紹&#xff1a; 定義與原理 - 定義&#xff1a;光纖耦合器是一種能使傳輸中的光信號在特殊結構的耦合區發生耦合&#xff0c;并進行再分配的器件&#xff0c;也叫分歧器、連接器、適配器、光纖法蘭盤。 - 原理&#xff1a;利用不同光纖面緊鄰光纖芯…

自然語言模型的演變與未來趨勢:從規則到多模態智能的跨越

自然語言模型的演變與未來趨勢&#xff1a;從規則到多模態智能的跨越 自然語言處理(NLP)作為人工智能領域最具挑戰性的分支之一&#xff0c;在過去幾十年經歷了翻天覆地的變化。從最初基于規則的系統到如今擁有萬億參數的大型語言模型(LLMs)&#xff0c;這一技術革新不僅徹底改…

筆記本電腦更換主板后出現2203:System configuration is invalid,以及2201、2202系統錯誤的解決

筆記本電腦更換主板后啟動出現2203:System configuration is invalid,以及2201、2202系統錯誤的解決 自用的一臺ThinkpadT490筆記本電腦 ,由于主板故障,不得不更換主板,通過某寶購置主板后進行了更換。 具體拆卸筆記本可搜索網絡視頻教程。 注意: 在更換主板時,注意先拍…

JavaScript中的觀察者模式

以下是關于 觀察者模式(Observer Pattern) 的全面梳理,涵蓋核心概念、實現方式、應用場景及注意事項,幫助我們掌握這一解耦事件通知與處理的經典設計模式: 一、觀察者模式基礎 1. 核心概念 定義:定義對象間 一對多 的依賴關系,當被觀察對象(Subject)狀態變化時,自動…

RAG基建之PDF解析的“流水線”魔法之旅

將PDF文件和掃描圖像等非結構化文檔轉換為結構化或半結構化格式是人工智能的關鍵部分。然而,由于PDF的復雜性和PDF解析任務的復雜性,這一過程顯得神秘莫測。 在RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”與“陷阱”中,我們介紹了PDF解析的主要任務,對現…

【Linux】GDB調試指南

一、GDB基礎 1. 啟動調試 gdb ./your_program # 啟動調試 gdb --args ./prog arg1 # 帶參數啟動 gdb -p <pid> # 附加到正在運行的進程 2. 斷點管理 b main # 在main函數設斷點 b file.c:20 # 在file.c第20行設斷點 b *0x4005a…

Android面試總結之Glide源碼級理解

當你的圖片列表在低端機上白屏3秒、高端機因內存浪費導致FPS腰斬時&#xff0c;根源往往藏在Glide的內存分配僵化、磁盤混存、網絡加載無優先級三大致命缺陷中。 本文從阿里P8級緩存改造方案出發&#xff0c;結合Glide源碼實現動態內存擴容、磁盤冷熱分區、智能預加載等黑科技&…

驅動開發系列49 - 搭建 Vulkan 驅動調試環境(編譯 mesa 3D)- Ubuntu24.04

一:搭建Vulkan運行環境 安裝vulkan依賴包: 1. sudo apt install vulkan-tools 2. sudo apt install libvulkan-dev 3. sudo apt install vulkan-utility-libraries-dev spirv-tools 4. sudo apt install libglfw3-dev libglm-dev 5. sudo apt install libxxf86vm-dev libxi-…

深度學習——圖像余弦相似度

計算機視覺是研究圖像的學問&#xff0c;在圖像的最終評價時&#xff0c;往往需要用到一些圖像相似度的度量指標&#xff0c;因此&#xff0c;在本文中我們將詳細地介紹原生和調用第三方庫的計算圖像余弦相似度的方法。 使用原生numpy實現 import numpy as npdef image_cosin…

項目代碼第8講【數據庫基礎知識】:SQL(DDL、DML、DQL、DCL);函數(聚合、字符串、數值、日期、流程);約束;多表查詢;事務

黑馬程序員 MySQL數據庫入門到精通&#xff0c;從mysql安裝到mysql高級、mysql優化全囊括_嗶哩嗶哩_bilibili 一、數據庫相關概念 1、主流的關系型數據庫都支持SQL語言——SQL語言可以操作所有的關系型數據庫 像MySQL、Oracle Database、Microsoft SQL Server、IBM Db2等主流的…

如何在阿里云linux主機上部署Node.Js

在阿里云的Linux服務器上搭建Node.js編程環境可以通過以下步驟完成。這里以常見的 Ubuntu/CentOS 系統為例&#xff0c;提供兩種安裝方式&#xff08;包管理器、NVM多版本管理&#xff09;&#xff1a; 一、通過包管理器安裝&#xff08;適合快速安裝指定版本&#xff09; 1. …

Python爬蟲:開啟數據抓取的奇幻之旅(一)

目錄 一、爬蟲初印象&#xff1a;揭開神秘面紗? 二、工欲善其事&#xff1a;前期準備? &#xff08;一&#xff09;Python 環境搭建? 1.下載 Python 安裝包&#xff1a;? 2.運行安裝程序&#xff1a;? 3.配置環境變量&#xff08;若自動添加失敗&#xff09;&#x…