话不多说,先上样品

这里出了用到了QListWidget和他的setItemWidget()函数,其他都是简单的qss样式绘制
这里每个项是自定义的widget,都是label即可

大体位置就是这样

然后是存放这些项的窗体

大体位置
以下是每个项widget的代码(头文件我就砍掉了)

#include "searchitem.h"
#include "ui_searchitem.h"SearchItem::SearchItem(QWidget *parent) :QWidget(parent),ui(new Ui::SearchItem)
{ui->setupUi(this);this->setStyleSheet("QLabel{background:transparent;}");ui->nameLabel->setStyleSheet("QLabel{color:rgb(51,51,51);}");ui->playCountLabel->setStyleSheet("QLabel{color:rgb(204,204,204);}");ui->descriptionLabel->setStyleSheet("QLabel{color:rgb(153,153,153);}");
}SearchItem::~SearchItem()
{delete ui;
}void SearchItem::setNumber(int num)
{ui->numberLabel->setText(QString::number(num));
}void SearchItem::setMusicName(QString name)
{ui->nameLabel->setText(name);ui->nameLabel->adjustSize();ui->nameLabel->resize(ui->nameLabel->width()+10,ui->nameLabel->height());ui->playCountLabel->setGeometry(ui->nameLabel->x()+ui->nameLabel->width()+10,ui->playCountLabel->y(),ui->playCountLabel->width(),ui->playCountLabel->height());
}void SearchItem::setPlayCount(int count)
{ui->playCountLabel->setText(QString::number(count));ui->playCountLabel->adjustSize();
}void SearchItem::setDescription(QString desc)
{if(desc.size()>20){QString partText = desc.left(18);QString showText = partText + "...";ui->descriptionLabel->setText(showText);}else{ui->descriptionLabel->setText(desc);}}void SearchItem::setNumberColor(QColor &color)
{QPalette palette = ui->numberLabel->palette();palette.setColor(QPalette::Text,color);ui->numberLabel->setPalette(palette);}void SearchItem::setMusicNameBold(bool bold)
{QFont font = ui->nameLabel->font();font.setBold(bold);ui->nameLabel->setFont(font);
}

具体就是封装了些方法方便外部使用

然后以下是存放项的窗体的代码(也是去掉了头文件)

#include "searchwindow.h"
#include "ui_searchwindow.h"SearchWindow::SearchWindow(int x,int y,QWidget *parent):QWidget(parent),ui(new Ui::SearchWindow)
{ui->setupUi(this);this->setWindowFlag(Qt::FramelessWindowHint);this->setGeometry(x,y,this->width(),this->height());this->setAttribute(Qt::WA_StyledBackground);this->setAttribute(Qt::WA_StyleSheet);this->setStyleSheet("QWidget{background-color:rgb(250,250,250); border-radius:5px;border-color:rgb(243,32,32);}");ui->topSearchLabel->setStyleSheet("QLabel#label{padding-left:15px;color:rgb(102,102,102);}");ui->topSearchListWidget->setStyleSheet("QListWidget{border:1px;border-radius:5px;}""QListWidget::Item{ background:rgb(250,250,250); height:60px;border-radius:5px;}""QListWidget::Item:hover{background:rgb(246,246,247);}");
}SearchWindow::~SearchWindow()
{delete ui;
}void SearchWindow::addSearchItem(SearchItem *item)
{QListWidgetItem *listWidgetItem = new QListWidgetItem(ui->topSearchListWidget);ui->topSearchListWidget->setItemWidget(listWidgetItem,item);
}void SearchWindow::setSearchItem(int index, SearchItem *item)
{QListWidgetItem *listWidgetItem = ui->topSearchListWidget->item(index-1);ui->topSearchListWidget->setItemWidget(listWidgetItem,item);
}void SearchWindow::clearSearchList()
{ui->topSearchListWidget->clear();
}

接下来就是在主窗体中响应了

我这里单独开了一个init函数

void MainWindow::initSearchWindow()
{if(searchWindow==NULL){int height = ui->searchEdit->height();int x = ui->searchEdit->x();int y = ui->searchEdit->y()+height;searchWindow = new SearchWindow(x,y,this);//    searchWindow = new SearchWindow(this);//    searchWindow->setGeometry(x,y,searchWindow->width(),searchWindow->height());searchWindow->installEventFilter(this);}searchWindow->clearSearchList();QStringList musicList = {"Lover Song","消愁","请笃信一个梦","摆脱","不灭的心","深夜一角","假摔","海底","乌鸦","春风十里","车站","姜子牙","能解答一切的答案","我的那些年","起风了","一荤一素","乌鸦","深夜一角","摆脱","消愁"};for(int i = 0;i<musicList.count();i++){SearchItem *item = new SearchItem();item->setNumber(i+1);item->setMusicName(musicList[i]);item->setPlayCount(1245321-i*26);item->setDescription(musicList[i]+"fdfdfdd");if(i<3){QColor redcolor(Qt::red);item->setNumberColor(redcolor);item->setMusicNameBold(true);}else{QColor blackColor(Qt::black);item->setNumberColor(blackColor);}searchWindow->addSearchItem(item);}
}void MainWindow::initPersonalCenterWindow()
{if(personalCenterWindow == NULL){int x = ui->iconButton->x()-40;int y = ui->iconButton->y()+ui->personButton->height()+10;personalCenterWindow = new PersonalCenterWindow(x,y,this);personalCenterWindow->setMemberState(false);personalCenterWindow->setGrade(8);personalCenterWindow->setDynamicCount(44);personalCenterWindow->setAttentionCount(64);personalCenterWindow->setFansCount(9648);}
}

这里这样写的原因是方便以后可以从数据库读取显示,方便扩展

我这里也有不懂的地方,是参照https://blog.csdn.net/weixin_42126427/article/details/120029057?spm=1001.2014.3001.5502
这位博友写的,不过我做了些改进方便扩展
大家可以学习一下

然后就是qss样式了,鼠标在经过每个项时深色显示

QListWidget::Item{background:rgb(250,250,250);height:60px;border-radius:5px;}QListWidget::Item:hover{background:rgb(246,246,247);}           }

我这个人不太会写论文,毕业的论文都差点没过,大家有不懂了,可以问我,我看到了会回复大家的

用qt做网易云音乐--搜索框实现相关推荐

  1. 用qt做网易云音乐--01标题栏实现

    把mainwindow的默认样式去掉,只留下无边框窗体 实现鼠标左键拖拽功能 #include "mainwindow.h" #include "ui_mainwindo ...

  2. 用qt做网易云音乐--源代码

    之前由于太忙,没有继续写了,所以把已完成的代码上传到git,给大家分享 先看下目前完成的成果 wyymusicfinish 有些部分模块实现的方法我写在之前的博客里了,还有些都是相似的功能,大家看看源 ...

  3. android仿网易云搜索,MaterialDesign之SearchView解锁 仿网易云音乐搜索

    原标题:MaterialDesign之SearchView解锁 仿网易云音乐搜索 本文作者 本文由CSDN_LQR投稿 CSDN_LQR的博客地址: http://www.jianshu.com/u/ ...

  4. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  5. 基于Qt模仿网易云音乐播放器

    基于Qt模仿网易云音乐界面,目前只实现了部分界面,后续继续完善改造. 部分代码: #ifndef MYSQLDATAMGR_H #define MYSQLDATAMGR_H#include <Q ...

  6. MusicHub -- 三合一(qq、xiami、网易云) 音乐搜索

    每次去搜个歌,碰巧又不知道在哪个平台发布,这个时候是不是很烦,要去每个平台上搜一遍.前两天 周月半 发了新歌<不爱我就拉倒>,我前后找了两三个平台,最后发现是QQ音乐独家发布,更可气的是我 ...

  7. 网易云音乐python爬虫(Js破解)

    网易云音乐下载python爬虫(Js破解) 最近做了一个网易云音乐下载的python爬虫,功能就是输入歌曲的名字,程序自动下载网易音乐搜索界面的第一首歌(一般都是原唱排第一位).本文很适合小白学习,写 ...

  8. qt编写网易云界面(5)----搜索框的实现

    我们知道当我们点击网易云的搜索框的时候,会出现对应的搜索内容. 如下图: 滑块可以滑动,选择对应的模块 我实现的部分: gif显示的还是不是那么好.下面简单实现过程: 主页面使用过滤器,构造函数中: ...

  9. Vue2使用vant实现_网易云音乐案例(可跟做练手项目)

    文章目录 知识点自测 铺垫(自学) 本地接口项目部署 今日学习目标 1. 案例-网易云音乐 1.0 网易云音乐-本地接口 1.1 网易云音乐-本地接口启动 1.2 网易云音乐-前端项目初始化 1.3 ...

最新文章

  1. at24c16如何划分出多个读写区_如何1分钟遍历100T数据?
  2. freopen - C/C++文件输入输出利器
  3. Yabbly:让经验缔结因果
  4. Flowable基础二十一 Flowable springboot 集成
  5. Spring Boot Spring MVC异常处理原理分析
  6. 华水c语言课程设计,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  7. 数组c语言什么时候学的,C语言学习之数组
  8. 你可能不知道的10个Blazor功能
  9. 类的垂直关系中,如何把握纯虚函数
  10. 一文看懂Java内存模型(JMM)
  11. js动态生成表格(添加删除行操作)
  12. 电动汽车电池换电站选址与定容(Matlab代码实现)
  13. 国外著名英文搜索引擎大全及分类
  14. 计算机主机mac地址怎么查,怎么查看电脑的Mac地址
  15. openpnp - Smoothieware project build
  16. Sicily 1001. Alphacode
  17. 【Mask scoring RCNN】实现目标检测
  18. javax.net.ssl.SSLHandshakeException: Unacceptable certificate: CN=GeoTrust SSL C
  19. oracle utl file putf,UTL_FILE基本用法
  20. 数据链路层功能概述----上

热门文章

  1. Arduino触摸屏MP3音乐播放器和闹钟项目
  2. 互联网医院开发|线上问诊源码|在线医疗软件
  3. 这些IT界短笑话,你能get吗?
  4. 中国高速运算放大器市场深度研究分析报告
  5. 工程技术提高营销效率(一)
  6. 由《罗素的故事》所想到的
  7. Python中的6个三维可视化工具!
  8. tf.function-decorated function tried to create variables on non-first call
  9. 网维无盘服务器系统日志错误,系统日志中一直有网卡错误出现(x520万兆网卡)...
  10. 给图片添加水印,并支持浏览器下载输出