qt编写网易云界面(10)----排行榜模块

     这个模块东西感觉不是很多,其实在,开发的时候细节还是很麻烦的,本以为2个小时绝对搞定,结果搞了半天,不过也想到了很多方式去实现对应的效果,希望大家能够喜欢。

      喜欢我,点赞加关注我偶,很快会把整个项目给大家展示出来,希望刚接触qt的朋友,可以在我这个项目学习到一点点知识就好。我就十分开心了。

      话不多说,我们来看这个模块目标网易云中的样子:

 我完成的模块部分:

 动态图如下: 

这里采用了QListWidget 配合 QWidget,  QListWidgetItem 等方式,加载进入数据。

RankingItem类图,布局:

排行榜界面基本布局。 

 

主要的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对应的头文件:

#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

 对应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);
}

    代码部分为了方便就快速写了,你们可以自己优化下,同时希望能给到刚使用qss 的小伙伴们,更加好的学习到。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5是一个Python绑定Qt库的工具包,可以用于创建桌面应用程序。Qt Designer是一个用于创建Qt界面的可视化工具,可以方便地创建GUI界面并导出为.ui文件。 要使用Qt Designer编写PyQt5界面,可以按照以下步骤进行操作: 1. 安装PyQt5和Qt Designer 如果你还没有安装PyQt5和Qt Designer,可以使用以下命令进行安装: ``` pip install PyQt5 pyqt5-tools ``` 2. 创建Qt Designer界面 打开Qt Designer,创建一个新的界面。 3. 设计界面Qt Designer中,你可以从工具箱中拖拽控件到界面中,设置控件的属性,布局等。 4. 保存界面Qt Designer中,选择“文件”->“保存”,将界面保存为.ui文件。 5. 将.ui文件转换为.py文件 使用以下命令将.ui文件转换为.py文件: ``` pyuic5 -o ui_filename.py ui_filename.ui ``` 其中,ui_filename是你的.ui文件名。这将生成一个.py文件,其中包含Qt Designer界面的Python代码。 6. 编写程序 在Python代码中导入生成的.py文件,然后使用它来创建GUI界面。 下面是一个简单的示例程序: ```python from PyQt5 import QtWidgets, uic class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() # Load the ui file uic.loadUi('ui_filename.ui', self) if __name__ == '__main__': app = QtWidgets.QApplication([]) window = MainWindow() window.show() app.exec_() ``` 在此示例中,我们使用`uic.loadUi`方法将.ui文件加载到`MainWindow`类中,然后创建`QApplication`和`MainWindow`实例,并将窗口显示出来。 以上就是使用Qt Designer编写PyQt5界面的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值