首页 > 其他分享 >Qt编写网易云界面 (6) -----排行榜实现

Qt编写网易云界面 (6) -----排行榜实现

时间:2023-08-25 14:56:13浏览次数:28  
标签:listCont 界面 Qt item ui new RankingItem ----- 255

今天实现一下排行榜模块,效果如图:

image-20230824122233320

UI设计:

image-20230824122317561

image-20230824122339026

主要qss代码:

/*排行榜内容*/
QLabel#labRankl
{
    font-family:"微软雅黑";
	color: rgb(55,55,55);
	font-size:20px;
	font-weight: bold;
}
 
/*查看全部*/
QLabel#labmore1,#labmore2
{
   font-family:"微软雅黑";
   font-size:12px;
   color: rgb(103,103,103);
}
 
/*榜单图片*/
QWidget#widUp
{
	border-image:url(images/ranking/widUp.png);
}
 
QWidget#widUp2
{
	border-image:url(images/ranking/widUp2.png);
}
/*列表框部分*/
QListWidget#listCont,#listCont2
{
	border:0px;
	color:rgb(55,55,55);
	background:rgb(255,255,255);
}
/*
QListWidget::Item#listCont,::Item#listCont2
{
	height:36;
	border:0px solid rgb(255,255,255);	
	color:rgb(55,55,55);
	background:rgb(255,255,255);
}
*/
QListWidget::Item:hover#listCont,::Item:hover#listCont2
{
	border-radius:2px;
	background:rgb(239,239,239);
}
/*选中*/
QListWidget::Item:selected#listCont,::Item:selected#listCont2
{
	border-radius:2px;
	background:rgb(239,239,239);
}

RankingItem.h:

#ifndef RANKINGITEM_H
#define RANKINGITEM_H
 
#include <QWidget>
 
namespace Ui {
class RankingItem;
}
 
class RankingItem : public QWidget
{
    Q_OBJECT
 
public:
    explicit RankingItem(QWidget *parent = nullptr);
    ~RankingItem();
 
    //设置第一数据,false 为普通颜色, true为红色
    void setNum(int num,bool b);
    //设置第2个数据 str  or  pic(int)
    void setStringOrPic(QString str);
    //num = 0 加载上  1加载下 2加载-, 其它不处理
    void setStringOrPic(int  num);
    //设置歌名
    void setMusicName(QString strName);
    //设置作者
    void setMusicAutor(QString name);
 
private:
    Ui::RankingItem *ui;
};
 
#endif // RANKINGITEM_H

RankingItem.cpp:

#include "rankingitem.h"
#include "ui_rankingitem.h"
#include <QString>
RankingItem::RankingItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RankingItem)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);
    ui->labNum->setStyleSheet("QLabel{color:rgb(255,61,61);background:transparent;}");
    ui->labCon->setStyleSheet("QLabel{color:rgb(54,54,54);background:transparent;}");
    //152,152,152
    ui->labEnd->setStyleSheet("QLabel{color:rgb(152,152,152);background:transparent;}");
    this->setStyleSheet("QWidget{background:transparent; border-radius:8px;}"
                        "QWidget:hover{background:transparent;}");
 
}
 
RankingItem::~RankingItem()
{
    delete ui;
}
 
void RankingItem::setNum(int num, bool b)
{
    ui->labNum->setText(QString::number(num));
    if(b == true)
    {
        ui->labNum->setStyleSheet("QLabel{color:rgb(255,61,61);background:transparent;}");
    }
    else {
        ui->labNum->setStyleSheet("QLabel{color:rgb(222,222,222;background:transparent;)}");
    }
}
 
void RankingItem::setStringOrPic(QString str)
{
    ui->labPicOrText->setText(str);
    ui->labPicOrText->setStyleSheet("QLabel{color:rgb(152,152,152);background:transparent;}");
}
 
void RankingItem::setStringOrPic(int num)
{
    // 0 加载上  1加载下 2加载-, 其它不处理
    ui->labPicOrText->setMinimumSize(8,4);
    ui->labPicOrText->setMaximumSize(8,8);
    if(num == 0)
    {
         ui->labPicOrText->setStyleSheet("QLabel{border-image:url(./images/ranking/up.png);}");
    }
    else if(num == 1)
    {
         ui->labPicOrText->setStyleSheet("QLabel{border-image:url(./images/ranking/down.png);}");
    }
    else if (num == 2) {
          ui->labPicOrText->setStyleSheet("QLabel{border-image:url(./images/ranking/nor.png);}");
    }
    else {
        //什么都补处理
    }
 
}
 
void RankingItem::setMusicName(QString strName)
{
    ui->labCon->setText(strName);
}
 
void RankingItem::setMusicAutor(QString name)
{
   ui->labEnd->setText(name);
}

主要代码:

void AllMain::setRankData()
{
    //第一个
    QListWidgetItem * newWidget = new QListWidgetItem(ui->listCont);
    RankingItem * item = new  RankingItem();
    newWidget->setBackgroundColor(QColor(249,249,249));
    newWidget->setSizeHint(QSize(item->width(),item->height()));
    item->setNum(1,true);
    item->setStringOrPic("792%");
    item->setMusicName("删了吧");
    item->setMusicAutor("烟(许佳豪)");
    ui->listCont->insertItem(0,newWidget);
    ui->listCont->setItemWidget(newWidget,item);
 
    //
    QListWidgetItem * newWidget1 = new QListWidgetItem(ui->listCont);
    RankingItem * item1 = new  RankingItem();
    newWidget1->setBackgroundColor(QColor(255,255,255));
    newWidget1->setSizeHint(QSize(item->width(),item->height()));
    item1->setNum(2,true);
    item1->setStringOrPic("127%");
    item1->setMusicName("时间轴");
    item1->setMusicAutor("余佳运");
    ui->listCont->insertItem(1,newWidget1);
    ui->listCont->setItemWidget(newWidget1,item1);
 
    QListWidgetItem * newWidget2 = new QListWidgetItem(ui->listCont);
    RankingItem * item2 = new  RankingItem();
    newWidget2->setBackgroundColor(QColor(249,249,249));
    newWidget2->setSizeHint(QSize(item->width(),item->height()));
    item2->setNum(3,true);
    item2->setStringOrPic("113%");
    item2->setMusicName("没你也能活下去");
    item2->setMusicAutor("Jony J");
    ui->listCont->insertItem(2,newWidget2);
    ui->listCont->setItemWidget(newWidget2,item2);
 
    QListWidgetItem * newWidget3 = new QListWidgetItem(ui->listCont);
    RankingItem * item3 = new  RankingItem();
    newWidget3->setBackgroundColor(QColor(255,255,255));
    newWidget3->setSizeHint(QSize(item->width(),item->height()));
    item3->setNum(4,false);
    item3->setStringOrPic("111%");
    item3->setMusicName("都不懂");
    item3->setMusicAutor("吉法师");
    ui->listCont->insertItem(3,newWidget3);
    ui->listCont->setItemWidget(newWidget3,item3);
 
 
    QListWidgetItem * newWidget4 = new QListWidgetItem(ui->listCont);
    RankingItem * item4 = new  RankingItem();
    newWidget4->setBackgroundColor(QColor(249,249,249));
    newWidget4->setSizeHint(QSize(item->width(),item->height()));
    item4->setNum(5,false);
    item4->setStringOrPic("88%");
    item4->setMusicName("透明轨迹");
    item4->setMusicAutor("ICY");
    ui->listCont->insertItem(4,newWidget4);
    ui->listCont->setItemWidget(newWidget4,item4);
    //设置第一个选中
    ui->listCont->setCurrentRow(0);
 
}
void AllMain::setRankNew()
{
    QListWidgetItem * newWidget = new QListWidgetItem(ui->listCont2);
    RankingItem * item = new  RankingItem();
    newWidget->setBackgroundColor(QColor(249,249,249));
    newWidget->setSizeHint(QSize(item->width(),item->height()));
    item->setNum(1,true);
    item->setStringOrPic(0);
    item->setMusicName("删了吧");
    item->setMusicAutor("烟(许佳豪)");
    ui->listCont2->insertItem(0,newWidget);
    ui->listCont2->setItemWidget(newWidget,item);
 
    //
    QListWidgetItem * newWidget1 = new QListWidgetItem(ui->listCont2);
    RankingItem * item1 = new  RankingItem();
    newWidget1->setBackgroundColor(QColor(255,255,255));
    newWidget1->setSizeHint(QSize(item->width(),item->height()));
    item1->setNum(2,true);
    item1->setStringOrPic(1);
    item1->setMusicName("时间轴");
    item1->setMusicAutor("余佳运");
    ui->listCont2->insertItem(1,newWidget1);
    ui->listCont2->setItemWidget(newWidget1,item1);
 
    QListWidgetItem * newWidget2 = new QListWidgetItem(ui->listCont2);
    RankingItem * item2 = new  RankingItem();
    newWidget2->setBackgroundColor(QColor(249,249,249));
    newWidget2->setSizeHint(QSize(item->width(),item->height()));
    item2->setNum(3,true);
    item2->setStringOrPic(2);
    item2->setMusicName("没你也能活下去");
    item2->setMusicAutor("Jony J");
    ui->listCont2->insertItem(2,newWidget2);
    ui->listCont2->setItemWidget(newWidget2,item2);
 
    QListWidgetItem * newWidget3 = new QListWidgetItem(ui->listCont2);
    RankingItem * item3 = new  RankingItem();
    newWidget3->setBackgroundColor(QColor(255,255,255));
    newWidget3->setSizeHint(QSize(item->width(),item->height()));
    item3->setNum(4,false);
    item3->setStringOrPic(2);
    item3->setMusicName("都不懂");
    item3->setMusicAutor("吉法师");
    ui->listCont2->insertItem(3,newWidget3);
    ui->listCont2->setItemWidget(newWidget3,item3);
 
 
    QListWidgetItem * newWidget4 = new QListWidgetItem(ui->listCont2);
    RankingItem * item4 = new  RankingItem();
    newWidget4->setBackgroundColor(QColor(249,249,249));
    newWidget4->setSizeHint(QSize(item->width(),item->height()));
    item4->setNum(5,false);
    item4->setStringOrPic(2);
    item4->setMusicName("透明轨迹");
    item4->setMusicAutor("ICY");
    ui->listCont2->insertItem(4,newWidget4);
    ui->listCont2->setItemWidget(newWidget4,item4);
    //设置第一个选中
    ui->listCont2->setCurrentRow(0);
}

标签:listCont,界面,Qt,item,ui,new,RankingItem,-----,255
From: https://www.cnblogs.com/dwinternet/p/17656917.html

相关文章

  • [代码随想录]Day27-贪心算法part01
    题目:455.分发饼干思路:贪心,思路是尽量先给胃口值小的分,饼干也是从小的开始分:如果饼干满足了胃口值,结果+1换下一个人,下一个饼干如果饼干满足不了胃口值,换下一个饼干(满足不了胃口值小的一定满足不了大的)代码:funcfindContentChildren(g[]int,s[]int)int{res:=......
  • 【算法记录】Java - Base64编码解码源码
    Base64编码表索引对应字符索引对应字符索引对应字符索引对应字符0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5......
  • pdfjs-dist v2.11.338写个react demo
    app.jsximport'./App.css'import*aspdfjsfrom"pdfjs-dist";import"pdfjs-dist/web/pdf_viewer.css";import{useEffect,useRef,useState}from'react'import{PDFViewer,PDFLinkService,EventBus}from'p......
  • .NET敏捷开发框架-RDIFramework.NET V6.0发布
    1、RDIFramework.NET敏捷开发框架介绍RDIFramework.NET敏捷开发框架,是我司重磅推出的基于最新.NET6+与.NETFramework的快速信息化系统开发、整合框架,为企业快速构建跨平台、企业级的应用提供了强大支持。开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数......
  • docker-compose的简单使用并搭建zookeeper集群
    简介DockerCompose是一个用于定义和运行多容器Docker应用程序的工具。它能够简化在单个主机上使用多个容器的部署过程。使用DockerCompose,您可以使用简单的YAML文件来定义应用程序的服务、网络和卷,并通过单个命令一键启动、停止和重建整个应用程序。DockerCompose允许......
  • ARM x86 RISC-V
    引言:计算机指令集架构是计算机体系结构的基础,不同的指令集架构在不同的应用领域具有重要性。本文将比较三种主要的指令集架构:ARM、x86和RISC-V,探讨它们的特点、应用以及对计算机领域的影响。ARM架构:ARM架构起源于英国的ARM公司,广泛应用于移动设备、嵌入式系统和物联网。ARM架构......
  • springboot结合baomidou dynamic-datasource组件实现多数据源
    当系统数据量过大,系统性能问题逐渐浮出水面。使用主从模式,不失是一个较好的选择。即业务在主库执行,不影响业务的查询考虑走从库。这时,程序需要动态多数据源配置。......
  • APT80DQ60BG-ASEMI新能源功率器件APT80DQ60BG
    编辑:llAPT80DQ60BG-ASEMI新能源功率器件APT80DQ60BG型号:APT80DQ60BG品牌:ASEMI芯片个数:2封装:TO-3P恢复时间:>50ns工作温度:-55°C~150°C浪涌电流:600A正向电流:80A反向耐压:200V正向压降:1.30V引脚数量:3APT80DQ60BG特性:ASEMI品牌APT80DQ60BG是采用工艺芯片,该芯片具有良好的......
  • LangChain-Chatchat学习资料-Windows开发部署(踩坑篇)
    LangChain-Chatchat学习资料-Windows开发部署(踩坑篇)环境准备的坑1.CUDA版本问题我是用的RTX3060显卡,通过nvidia-smi命令,查看显卡支持的CUDA版本为12.2,然后下载版本的CUDA,后续发现这里是个坑,pytorch目前最新版为2.0.1,支持的cuda版本最高为11.8,所以想使用显卡跑pytorch,需要讲CUDA......
  • Nacos-Nacos和Eureka的对比
      临时实例会被心跳检测,一旦出现问题就会被剔除而非临时实例不会,nacos会主动访问,出现问题会发出警报,但是不会剔除,会等实例修复 Nacos会主动发送给服务消费者变更信息,一旦出现心跳检测出现问题就会发送     ......