QT項目 -仿QQ音樂的音樂播放器(第四節)

一、RecBox中btUp和btDown按鈕clicked處理

選中左右鍵(btUp和btDown按鈕)然后右擊轉到槽->click()

void RecBox::on_btUp_clicked()
{}void RecBox::on_btDown_clicked()
{}

二、imageList中圖片分組

// recbox.h 中新增
int currentIndex; // 標記當先顯?第?組圖?和推薦信息
int count; // 標記imageList中元素按照col分組總數
// recbox.cpp 中新增
void RecBox::initRecBoxUi(QJsonArray data, int row)
{// ...imageList = data;//從這里開始往下面添加// 默認顯?第0組currentIndex = 0;// 計算總共有?組圖?,ceil表?向上取整count = ceil(imageList.size()/col);// 在RecBox控件添加RecBoxItem
createRecBoxItem();
}

接下來寫左移和右移的函數,輪番播放

void RecBox::on_btUp_clicked()
{currentIndex--;if(currentIndex<0){currentIndex=count-1;}createRecBoxItem();
}void RecBox::on_btDown_clicked()
{currentIndex++;if(currentIndex>=count){currentIndex=0;}createRecBoxItem();
}

現在有個問題是當切換頁面時進來的元素和原來的元素會堆積在一起,沒有刪除原先recboxitem的元素

三、除去重復元素

void RecBox::createRecBoxItem()
{//添加元素之前先抹去之前的元素布局QList<RecBoxItem*> RecUpList=ui->recListUp->findChildren<RecBoxItem*>();for(auto e:RecUpList){ui->recListUpHLayout->removeWidget(e);delete e;}QList<RecBoxItem*> RecDownList=ui->recListUp->findChildren<RecBoxItem*>();for(auto e:RecDownList){ui->recListDownHLayout->removeWidget(e);delete e;}
//創建元素代碼………………
}

四、按照分組計算imageList中元素偏移

 //接上面的代碼,在createrecboxitem里// 創建RecBoxItem對象,往RecBox中添加int index=0;for(int i = currentIndex*col; i < col+currentIndex*col; ++i){RecBoxItem* item = new RecBoxItem();// 設置?樂圖?與對應?本QJsonObject obj = imageList[i].toObject();item->setText(obj.value("text").toString());item->setImage(obj.value("path").toString());if(index >= col/2 && row == 2){ui->recListDownHLayout->addWidget(item);}else{ui->recListUpHLayout->addWidget(item);}index++;

int i = currentIndex*col 這里的初始值應該是每組偏移量的值,currentIndex為當前界面位置,col是每組的item數目,這時候的i已經不是表示的從0開始的item數目了,因此需要單獨設立一個index變量用來計數和判斷它和col/2之前的大小。

五、自定義CommonPage

新增加?個設計界面,objectName修改為CommonPage,geometry的寬?修改為800*500。
① 拖拽?個QLabel、兩個Widget和?個List View控件到CommonPage中,objectName從上往下依
次修改為pageTittle、musicPlayBox、listLabelBox、pageMusicList,然后選中CommonPage點
擊垂直布局,將CommonPage的margin和Spacing修改為0。
pageTittle的minimumSize和maximumSize的?度修改為30。
musicPlayBox的minimumSize和maximumSize的?度修改為150。
listLabelBox的minimumSize和maximumSize的?度修改為40。
② 將pageTittle的文本內容修改為"本地音樂"
③ musicPlayBox中
拖拽?個QLabel,objectName修改為musicImageLabel,minimumSize和maximumSize的寬度
修改為150
拖拽?個Widget,objectName修改為playAll,minimumSize和maximumSize的寬度修改為120,
在其內部拖拽 ?個PushButton和Vertical Space(即垂直彈簧),將按鈕的objectName修改為
playAllBtn,minimumSize和 maximumSize的寬和高修改為100*30,?本內容修改為"播放全
部",然后選中playAll點擊垂直布局。
拖拽?個Horizontal Spacer到CommonPage中,放在playAll之后。
然后選中musicPlayBox,點擊水平布局,將margin和spacing設置為0.
④ listLabelBox中
拖拽三個QLabel,內容依次修改為:歌曲名稱、歌手名稱、專輯名稱,objectName從左往右依次
修改為: musicNameLabel、musicSingerLabel、musicAlbumLabel
然后選中musicPlayBox,點擊?平布局,將margin和spacing設置為0.
⑤ 選中List View,右鍵單擊彈出菜單中選擇"變形為",選擇QListWidget

選中QQMusic頁面,將stackedWidget中我喜歡、本地下載、最近播放對應的頁面提升為
CommonPage,頁面就處理完成。

按鈕格式:

#playAllBtn
{background-color:#E3E3E3;border-radius:10px;
}
#playAllBtn:hover
{background-color:#1ECD97;
}

目前界面情況:

屏幕錄制 2025-07-31 204416

?

關注三連我盡快更新哦~~~?

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

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

相關文章

DeepSeek SEO關鍵詞優化提升流量增長

內容概要DeepSeek SEO關鍵詞優化致力于通過科學的方法&#xff0c;顯著提升網站在搜索引擎中的可見度與自然流量。其核心在于深入理解并精準匹配用戶的真實搜索意圖&#xff0c;而非僅僅堆砌詞匯。具體來說&#xff0c;該策略運用深度意圖導向策略&#xff0c;確保內容與用戶需…

# Ubuntu 系統設置 USB PnP 音頻設備為默認設備的完整教程

Ubuntu 系統設置 USB PnP 音頻設備為默認設備的完整教程 在使用 Ubuntu 系統時&#xff0c;尤其是在嵌入式設備如 NVIDIA Jetson 系列上&#xff0c;我們經常需要將 USB PnP 音頻設備設置為默認設備。本文將詳細介紹如何通過命令行配置&#xff0c;使 USB PnP 音頻設備在系統重…

Hadoop JMX 配置的完整文檔

一、JMX 基礎概念與 Hadoop 支持 1、JMX 作用。 Java Management Extensions&#xff08;JMX&#xff09;提供標準 API 監控 JVM 應用運行時狀態&#xff08;內存、線程、GC&#xff09;及 Hadoop 組件指標&#xff08;HDFS 容量、RPC 性能、節點狀態&#xff09; 2、Hadoop 組…

arm架構系統打包qt程序--麒麟操作系統為例

檢查系統架構 uname -a如果顯示是aarch644或arm64&#xff0c;說明你使用的是ARM架構&#xff0c;&#xff0c;需要下載ARM版本。 下載對應架構的linuxdeployqt 編寫腳本 vim deploy.sh#!/bin/bash APP_NAME"sunny450_silc"# 確保deploy目錄存在 mkdir -p deploy# 復…

Kong API Gateway深度解析:插件系統與微服務架構的技術基石

在微服務&#xff08;microservices&#xff09;架構主導的今天&#xff0c;API網關&#xff08;API Gateway&#xff09;作為服務入口的“交通樞紐”&#xff0c;承擔著流量調度、安全防護、可觀測性&#xff08;observability&#xff09;等核心職責。Kong作為開源API網關領域…

Linux應用開發基礎知識——Makefile初級教程(九)

目錄 一、Makefile是啥&#xff1f; 1.1、了解幾種文件&#xff08;.o 文件和.c文件 &#xff09; 1.2、關于Makefile的寫法 1.3、簡單使用Makefile基本指令 1.4、引入偽目標 1.5、Makefile的優點 1.6、Makefile的使用 二、Makefile創建和使用變量 2.1、創建變量的目的…

面試問題收集——卷積神經網絡

博主會經常分享自己在人工智能階段的學習筆記&#xff0c;歡迎大家訪問我滴個人博客&#xff01;&#xff08;養成系Blog&#xff01;&#xff09; 小牛壯士滴Blog~ - 低頭趕路 敬事如儀https://kukudelin.top/ 01-卷積基礎知識 問&#xff1a;簡述卷積基本操作&#xff0c;…

Kubernetes 全面解析:從基礎設施變革到核心架構詳解

引言在容器化技術席卷全球的今天&#xff0c;Kubernetes&#xff08;簡稱 K8s&#xff09;已成為容器編排領域的事實標準。無論是互聯網企業還是傳統行業&#xff0c;都在通過 Kubernetes 實現應用的高效部署、彈性擴展和自動化運維。但對于初學者而言&#xff0c;Kubernetes 的…

哈希相關的模擬實現

哈希相關的模擬實現哈希表的模擬實現閉散列除留取余法查找、插入和刪除閉散列參考程序開散列除留取余法&#xff08;數組鏈表&#xff09;迭代器查找和刪除插入開散列參考程序unordered_map和unordered_set的模擬實現unordered_mapunordered_set建議先看 哈希的概念及其應用-CS…

Vue3+Vite項目如何簡單使用tsx

安裝必要的依賴npm install vitejs/plugin-vue-jsx -D在 vite.config.ts 中添加以下內容import vueJsx from vitejs/plugin-vue-jsx export default {plugins: [vueJsx()] }在Vue頁面使用<script lang"ts"> import { defineComponent } from vue export defaul…

05百融云策略引擎項目交付-laravel實戰完整交付定義常量分文件配置-獨立建立lib類處理-成功導出pdf-優雅草卓伊凡

05百融云策略引擎項目交付-laravel實戰完整交付定義常量分文件配置-獨立建立lib類處理-成功導出pdf-優雅草卓伊凡引言此前只是把關于如何把查詢內容導出pdf庫的代碼實現了&#xff0c;但是我們并沒有完成整個項目&#xff0c;這最后一個步驟就是安裝composer再安裝tcpdf庫&…

模型訓練速度慢排查

一、nvidia-smi 查看 GPU 的利用率與顯存。若 GPU 利用率低或波動&#xff0c;說明 CPU 處理數據的速度跟不上 GPU 計算的速度&#xff0c;需要檢查數據傳輸并調整 num_workers&#xff1b;若 GPU 顯存充足&#xff0c;可以逐步增加 batch_size_per_card 直至顯存占滿&#xff…

STM32學習記錄--Day4

今天了解了一下SPI總線&#xff1a;1.SPI內部結構??&#x1f50c; SPI 四大核心引腳功能詳解??1. ??MOSI (Master Output Slave Input)????功能??&#xff1a;??主機輸出數據線????工作流程??&#xff1a;主機內部發送數據寄存器 (TxDR) 的數據 → 移位寄存…

【網絡安全】等級保護2.0解決方案

等保2.0&#xff08;網絡安全等級保護2.0&#xff09;是我國網絡安全領域的基礎性制度&#xff0c;在1.0版本基礎上擴展了云計算、大數據、物聯網等新興領域&#xff0c;形成覆蓋全場景的安全防護框架。其核心是按信息系統重要程度劃分等級&#xff08;1-5級&#xff09;&#…

TypeScript 基礎介紹(二)

引言&#xff1a;從基礎到結構化類型 在《TypeScript 基礎介紹&#xff08;一&#xff09;》TypeScript基礎介紹&#xff08;一&#xff09;-CSDN博客中&#xff0c;我們探討了 TypeScript 的類型系統基礎、聯合類型、類型斷言和類型守衛等核心特性。這些內容解決了 JavaScript…

【科研繪圖系列】R語言繪制線性相關性

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制線性相關性 加載R包 library(tidyverse) library(ggplot2) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2

FastAPI的請求-響應周期為何需要后臺任務分離?

url: /posts/c7b54d6b3b6b5041654e69e5610bf3b9/ title: FastAPI的請求-響應周期為何需要后臺任務分離? date: 2025-07-31T06:11:25+08:00 lastmod: 2025-07-31T06:11:25+08:00 author: cmdragon summary: FastAPI 的請求-響應周期遵循 ASGI 協議,類似于餐廳點餐流程。同步處…

多種錄音筆錄音芯片方案推薦

多種錄音筆錄音芯片方案推薦一、引言隨著信息技術的飛速發展&#xff0c;錄音筆作為一種重要的音頻記錄設備&#xff0c;在會議記錄、采訪、學習等眾多場景中得到廣泛應用。其核心的錄音芯片方案直接影響錄音質量、功能特性以及產品成本。唯創知音作為音頻芯片領域的知名廠商&a…

Linux系統編程Day2-- Linux常用操作

一、Linux 基本命令概覽以下是一些常用的Linux命令操作&#xff0c;后續我們會對其每個單獨如何使用進行講解。操作類型常用命令示例文件/目錄操作ls, cd, cp, mv, rm, mkdir, rmdir查看文件內容cat, less, more, head, tail查找操作find, grep, locate, which權限管理chmod, c…

cs336 assignment1 作業環境配置

代碼結構 所有的代碼寫到cs336_basics/* 下面&#xff0c;在adapters.py里調用自己的.py&#xff0c;通過所有的test。 作業資料參考 karpathy視頻倉庫&#xff1a; 視頻 github倉庫 測試項目運行環境 下載uv uv官網倉庫 使用命令&#xff1a; powershell -ExecutionPoli…