IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 利用PyQt5制作本地音乐播放器 -> 正文阅读

[C++知识库]利用PyQt5制作本地音乐播放器

介绍

本文是对之前的音乐播放器的一些改进和功能实现。只写了有变化的部分,具体部分请看上一篇博客。
[利用PyQt5和QSS制作本地音乐播放器(初稿)](https://blog.csdn.net/weixin_44343083/article/details/114256446)

变化展示

主界面上增加了查找歌单内歌曲的功能和点击歌单列表表头对歌单内歌曲进行排序等功能。
整体
增加了右键重命名歌单和删除歌单功能
歌单右键
增加了歌曲列表右键菜单功能
歌曲右键
增加了任务栏缩略图的功能
任务栏缩略图
增加了系统任务栏右键菜单功能
工具栏右键

变化部分功能实现思路和代码

  1. 歌曲查找功能
    即在搜索框内输入文字,便可以触发搜索函数进行歌单搜索;搜索框内无文字时退出搜索,并恢复歌单。
	# 控件设置和事件触发
	self.song_search = QtWidgets.QLineEdit()
    self.song_search.setPlaceholderText('搜索歌单音乐')
    self.search_btn = QtWidgets.QPushButton(qtawesome.icon('fa.search'),'')
    self.search_btn.setEnabled(False)
    self.song_search.textChanged.connect(self.search_song)
    def search_song(self, a):	# 函数实现
        self.songlist_table.setSortingEnabled(False)
        if a:
            items = self.songlist_table.findItems(a, Qt.MatchContains)
            nRow = int(self.songlist_table.rowCount())
            bRowHidden = True
            for i in range(nRow):
                bRowHidden = True
                for item in items:
                    if item == None:
                        continue
                    if self.songlist_table.row(item)==i:
                        bRowHidden = False
                        break
                self.songlist_table.setRowHidden(i,bRowHidden)
        else:
            nRow = int(self.songlist_table.rowCount())
            for i in range(nRow):
                self.songlist_table.setRowHidden(i, False)
            self.songlist_table.setSortingEnabled(True)
            self.songlist_table.sortByColumn(0, Qt.AscendingOrder)
  1. 歌单排序功能
    即点击表头进行表格排序。
    注: 每次对表格内数据进行更新时需要先将下面这个函数数值设为false,否则表格数据显示会出现错误。(不知道为什么,反正就是这样)
self.songlist_table.setSortingEnabled(True)	#这里设置为true即可实现
self.songlist_table.sortByColumn(0, Qt.AscendingOrder)
  1. 右键菜单
    #	事件触发
    self.left_list.setContextMenuPolicy(Qt.CustomContextMenu)
    self.left_list.customContextMenuRequested.connect(self.songlist_menu)
    def songlist_menu(self, point):	#	函数实现
        menu = QtWidgets.QMenu()
        action = menu.addAction('重命名')
        action.triggered.connect(self.Rename_list)
        action = menu.addAction('删除')
        action.triggered.connect(self.Delete_list)
        if self.left_list.currentItem() and self.left_list.itemAt(point) is not None:
            menu.exec_(QCursor.pos())
  1. 缩略图任务栏
    def setTaskbar(self):
        self.taskbar = QWinThumbnailToolBar(self)
        self.taskbar.setWindow(self.windowHandle())
        self.taskbar_prev = QWinThumbnailToolButton()
        self.taskbar_prev.setIcon(qtawesome.icon('fa.step-backward', color='#F76677'))
        self.taskbar_prev.setToolTip('上一首')
        self.taskbar_prev.setDismissOnClick(True)
        self.taskbar_prev.clicked.connect(self.prev_song)
        self.taskbar_play = QWinThumbnailToolButton()
        self.taskbar_play.setIcon(qtawesome.icon('fa.play', color='#F76677'))
        self.taskbar_play.setToolTip('播放')
        self.taskbar_play.setDismissOnClick(True)
        self.taskbar_play.clicked.connect(self.play_song)
        self.taskbar_next = QWinThumbnailToolButton()
        self.taskbar_next.setIcon(qtawesome.icon('fa.step-forward', color='#F76677'))
        self.taskbar_next.setToolTip('下一首')
        self.taskbar_next.setDismissOnClick(True)
        self.taskbar_next.clicked.connect(self.next_song)
        self.taskbar.addButton(self.taskbar_prev)
        self.taskbar.addButton(self.taskbar_play)
        self.taskbar.addButton(self.taskbar_next)
  1. 系统任务栏
    def setQSystemTray(self):
        menu=QtWidgets.QMenu()
        action = menu.addAction('上一首')
        action.setIcon(qtawesome.icon('fa.step-backward', color='#363636'))
        action.triggered.connect(self.prev_song)
        action = menu.addAction('下一首')
        action.setIcon(qtawesome.icon('fa.step-forward', color='#363636'))
        action.triggered.connect(self.next_song)
        action = menu.addAction('退出')
        action.setIcon(qtawesome.icon('fa.sign-out', color='#363636'))
        action.triggered.connect(self.close)
        menu.setStyleSheet('''
            QMenu{
                background-color:rgba(250,250,252);
                font-size:18px;
                color:rgb(66,66,66);
                border-radius:5px;
                width:200px;
                }
            QMenu::item{
                width:198px;height:30px;
                background-color:rgb(250,250,252);
                border-radius:3px;
                padding: 0px 0px 0px 20px;
                margin:3px 3px 3px 3px;
            }
            QMenu::item:selected{
                background-color:rgb(237,237,239);
                }
        ''')
        self.trayIcon = QtWidgets.QSystemTrayIcon()
        self.trayIcon.setContextMenu(menu)
        self.trayIcon.setIcon(QIcon(':/ICON/xiao.ico'))
        self.trayIcon.show()

结】

感觉没改多少东西,就这点,或许有bug。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 11:56:22  更:2021-08-26 11:58:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 17:06:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码