├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── Release
├── .qmake.stash
└── release
│ └── musicPlayer.exe
└── src
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
├── musicPlayer.pro
├── pause.ico
├── play.ico
└── resource.qrc
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # C++ objects and libs
2 | *.slo
3 | *.lo
4 | *.o
5 | *.a
6 | *.la
7 | *.lai
8 | *.so
9 | *.dll
10 | *.dylib
11 |
12 | # Qt-es
13 | object_script.*.Release
14 | object_script.*.Debug
15 | *_plugin_import.cpp
16 | /.qmake.cache
17 | /.qmake.stash
18 | *.pro.user
19 | *.pro.user.*
20 | *.qbs.user
21 | *.qbs.user.*
22 | *.moc
23 | moc_*.cpp
24 | moc_*.h
25 | qrc_*.cpp
26 | ui_*.h
27 | *.qmlc
28 | *.jsc
29 | Makefile*
30 | *build-*
31 |
32 | # Qt unit tests
33 | target_wrapper.*
34 |
35 | # QtCreator
36 | *.autosave
37 |
38 | # QtCreator Qml
39 | *.qmlproject.user
40 | *.qmlproject.user.*
41 |
42 | # QtCreator CMake
43 | CMakeLists.txt.user*
44 |
45 | # QtCreator 4.8< compilation database
46 | compile_commands.json
47 |
48 | # QtCreator local machine specific files for imported projects
49 | *creator.user*
50 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU LESSER GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 |
9 | This version of the GNU Lesser General Public License incorporates
10 | the terms and conditions of version 3 of the GNU General Public
11 | License, supplemented by the additional permissions listed below.
12 |
13 | 0. Additional Definitions.
14 |
15 | As used herein, "this License" refers to version 3 of the GNU Lesser
16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU
17 | General Public License.
18 |
19 | "The Library" refers to a covered work governed by this License,
20 | other than an Application or a Combined Work as defined below.
21 |
22 | An "Application" is any work that makes use of an interface provided
23 | by the Library, but which is not otherwise based on the Library.
24 | Defining a subclass of a class defined by the Library is deemed a mode
25 | of using an interface provided by the Library.
26 |
27 | A "Combined Work" is a work produced by combining or linking an
28 | Application with the Library. The particular version of the Library
29 | with which the Combined Work was made is also called the "Linked
30 | Version".
31 |
32 | The "Minimal Corresponding Source" for a Combined Work means the
33 | Corresponding Source for the Combined Work, excluding any source code
34 | for portions of the Combined Work that, considered in isolation, are
35 | based on the Application, and not on the Linked Version.
36 |
37 | The "Corresponding Application Code" for a Combined Work means the
38 | object code and/or source code for the Application, including any data
39 | and utility programs needed for reproducing the Combined Work from the
40 | Application, but excluding the System Libraries of the Combined Work.
41 |
42 | 1. Exception to Section 3 of the GNU GPL.
43 |
44 | You may convey a covered work under sections 3 and 4 of this License
45 | without being bound by section 3 of the GNU GPL.
46 |
47 | 2. Conveying Modified Versions.
48 |
49 | If you modify a copy of the Library, and, in your modifications, a
50 | facility refers to a function or data to be supplied by an Application
51 | that uses the facility (other than as an argument passed when the
52 | facility is invoked), then you may convey a copy of the modified
53 | version:
54 |
55 | a) under this License, provided that you make a good faith effort to
56 | ensure that, in the event an Application does not supply the
57 | function or data, the facility still operates, and performs
58 | whatever part of its purpose remains meaningful, or
59 |
60 | b) under the GNU GPL, with none of the additional permissions of
61 | this License applicable to that copy.
62 |
63 | 3. Object Code Incorporating Material from Library Header Files.
64 |
65 | The object code form of an Application may incorporate material from
66 | a header file that is part of the Library. You may convey such object
67 | code under terms of your choice, provided that, if the incorporated
68 | material is not limited to numerical parameters, data structure
69 | layouts and accessors, or small macros, inline functions and templates
70 | (ten or fewer lines in length), you do both of the following:
71 |
72 | a) Give prominent notice with each copy of the object code that the
73 | Library is used in it and that the Library and its use are
74 | covered by this License.
75 |
76 | b) Accompany the object code with a copy of the GNU GPL and this license
77 | document.
78 |
79 | 4. Combined Works.
80 |
81 | You may convey a Combined Work under terms of your choice that,
82 | taken together, effectively do not restrict modification of the
83 | portions of the Library contained in the Combined Work and reverse
84 | engineering for debugging such modifications, if you also do each of
85 | the following:
86 |
87 | a) Give prominent notice with each copy of the Combined Work that
88 | the Library is used in it and that the Library and its use are
89 | covered by this License.
90 |
91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license
92 | document.
93 |
94 | c) For a Combined Work that displays copyright notices during
95 | execution, include the copyright notice for the Library among
96 | these notices, as well as a reference directing the user to the
97 | copies of the GNU GPL and this license document.
98 |
99 | d) Do one of the following:
100 |
101 | 0) Convey the Minimal Corresponding Source under the terms of this
102 | License, and the Corresponding Application Code in a form
103 | suitable for, and under terms that permit, the user to
104 | recombine or relink the Application with a modified version of
105 | the Linked Version to produce a modified Combined Work, in the
106 | manner specified by section 6 of the GNU GPL for conveying
107 | Corresponding Source.
108 |
109 | 1) Use a suitable shared library mechanism for linking with the
110 | Library. A suitable mechanism is one that (a) uses at run time
111 | a copy of the Library already present on the user's computer
112 | system, and (b) will operate properly with a modified version
113 | of the Library that is interface-compatible with the Linked
114 | Version.
115 |
116 | e) Provide Installation Information, but only if you would otherwise
117 | be required to provide such information under section 6 of the
118 | GNU GPL, and only to the extent that such information is
119 | necessary to install and execute a modified version of the
120 | Combined Work produced by recombining or relinking the
121 | Application with a modified version of the Linked Version. (If
122 | you use option 4d0, the Installation Information must accompany
123 | the Minimal Corresponding Source and Corresponding Application
124 | Code. If you use option 4d1, you must provide the Installation
125 | Information in the manner specified by section 6 of the GNU GPL
126 | for conveying Corresponding Source.)
127 |
128 | 5. Combined Libraries.
129 |
130 | You may place library facilities that are a work based on the
131 | Library side by side in a single library together with other library
132 | facilities that are not Applications and are not covered by this
133 | License, and convey such a combined library under terms of your
134 | choice, if you do both of the following:
135 |
136 | a) Accompany the combined library with a copy of the same work based
137 | on the Library, uncombined with any other library facilities,
138 | conveyed under the terms of this License.
139 |
140 | b) Give prominent notice with the combined library that part of it
141 | is a work based on the Library, and explaining where to find the
142 | accompanying uncombined form of the same work.
143 |
144 | 6. Revised Versions of the GNU Lesser General Public License.
145 |
146 | The Free Software Foundation may publish revised and/or new versions
147 | of the GNU Lesser General Public License from time to time. Such new
148 | versions will be similar in spirit to the present version, but may
149 | differ in detail to address new problems or concerns.
150 |
151 | Each version is given a distinguishing version number. If the
152 | Library as you received it specifies that a certain numbered version
153 | of the GNU Lesser General Public License "or any later version"
154 | applies to it, you have the option of following the terms and
155 | conditions either of that published version or of any later version
156 | published by the Free Software Foundation. If the Library as you
157 | received it does not specify a version number of the GNU Lesser
158 | General Public License, you may choose any version of the GNU Lesser
159 | General Public License ever published by the Free Software Foundation.
160 |
161 | If the Library as you received it specifies that a proxy can decide
162 | whether future versions of the GNU Lesser General Public License shall
163 | apply, that proxy's public statement of acceptance of any version is
164 | permanent authorization for you to choose that version for the
165 | Library.
166 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Qt MusicPlayer Simaple
2 | Qt 超级简单的音乐播放器
3 |
--------------------------------------------------------------------------------
/Release/.qmake.stash:
--------------------------------------------------------------------------------
1 | QMAKE_CXX.INCDIRS = \
2 | h:/Qt/Qt5.11.1/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include \
3 | h:/Qt/Qt5.11.1/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed \
4 | h:/Qt/Qt5.11.1/Tools/mingw530_32/i686-w64-mingw32/include \
5 | h:/Qt/Qt5.11.1/Tools/mingw530_32/i686-w64-mingw32/include/c++ \
6 | h:/Qt/Qt5.11.1/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 \
7 | h:/Qt/Qt5.11.1/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward
8 | QMAKE_CXX.LIBDIRS = \
9 | h:/Qt/Qt5.11.1/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0 \
10 | h:/Qt/Qt5.11.1/Tools/mingw530_32/lib/gcc \
11 | h:/Qt/Qt5.11.1/Tools/mingw530_32/i686-w64-mingw32/lib \
12 | h:/Qt/Qt5.11.1/Tools/mingw530_32/lib
13 | QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
14 | QMAKE_CXX.QMAKE_GCC_MAJOR_VERSION = 5
15 | QMAKE_CXX.QMAKE_GCC_MINOR_VERSION = 3
16 | QMAKE_CXX.QMAKE_GCC_PATCH_VERSION = 0
17 | QMAKE_CXX.COMPILER_MACROS = \
18 | QT_COMPILER_STDCXX \
19 | QMAKE_GCC_MAJOR_VERSION \
20 | QMAKE_GCC_MINOR_VERSION \
21 | QMAKE_GCC_PATCH_VERSION
22 |
--------------------------------------------------------------------------------
/Release/release/musicPlayer.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChunSource/Qt-MusicPlayer-Simaple/29243d1e59503a0bea21aa74ab90e473b809ab93/Release/release/musicPlayer.exe
--------------------------------------------------------------------------------
/src/main.cpp:
--------------------------------------------------------------------------------
1 | #include "mainwindow.h"
2 | #include
3 |
4 | int main(int argc, char *argv[])
5 | {
6 | QApplication a(argc, argv);
7 | MainWindow w;
8 | w.show();
9 |
10 | return a.exec();
11 | }
12 |
--------------------------------------------------------------------------------
/src/mainwindow.cpp:
--------------------------------------------------------------------------------
1 | #include "mainwindow.h"
2 | #include "ui_mainwindow.h"
3 | #include
4 |
5 | MainWindow::MainWindow(QWidget *parent) :
6 | QMainWindow(parent),
7 | ui(new Ui::MainWindow)
8 | {
9 | ui->setupUi(this);
10 | connect(ui->ButtonPause,&QPushButton::clicked,this,&MainWindow::SlotButtonStart);
11 | connect(ui->ButtonNext,&QPushButton::clicked,this,&MainWindow::SlotButtonNext);
12 | connect(ui->ButtonLastMusic,&QPushButton::clicked,this,&MainWindow::SlotButtonPrevious);
13 | init(); //初始化相关函数
14 | }
15 |
16 | MainWindow::~MainWindow()
17 | {
18 | delete ui;
19 | }
20 |
21 | void MainWindow::init()
22 | {
23 | PlayerList = new QMediaPlaylist; //实例化播放器和播放列表
24 | Player = new QMediaPlayer;
25 |
26 |
27 |
28 | fileList = getFileNames(this->MusicPath); //获取文件夹下的所有音乐文件
29 |
30 | // qDebug()<<"ALL Music File: \n "<addMedia(QUrl::fromLocalFile(MusicPath+"\\"+fileName));
37 | }
38 | PlayerList->setCurrentIndex(0);
39 |
40 | Player->setPlaylist(PlayerList);//将播放列表加载到播放器
41 | connect(Player,&QMediaPlayer::currentMediaChanged,this,&MainWindow::SlotShowCurrentMedia);
42 | }
43 |
44 | QStringList MainWindow::getFileNames(const QString &path)
45 | {
46 |
47 | QDir dir(path);
48 | QStringList nameFilters;
49 | nameFilters << "*.mp3";
50 | QStringList files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);
51 | return files;
52 | }
53 |
54 | void MainWindow::SlotShowCurrentMedia()
55 | {
56 | int index = PlayerList->currentIndex();
57 | QString songName = fileList.at(index);
58 | ui->label->setText(songName);
59 | }
60 |
61 | void MainWindow::SlotButtonStart()
62 | {
63 | if(!isPlay)
64 | {
65 | isPlay = true;
66 | ui->ButtonPause->setIcon(QIcon(":/pause.ico"));
67 | Player->play();
68 | }
69 | else
70 | {
71 | isPlay = false;
72 | ui->ButtonPause->setIcon(QIcon(":/play.ico"));
73 | Player->pause();
74 | }
75 | }
76 |
77 | void MainWindow::SlotButtonPrevious()
78 | {
79 | PlayerList->previous();
80 | PlayerList->previousIndex();
81 | }
82 |
83 | void MainWindow::SlotButtonNext()
84 | {
85 | PlayerList->next();
86 | PlayerList->nextIndex();
87 | }
88 |
89 | void MainWindow::addItem(QString name)
90 | {
91 | int count = ui->tableWidget->rowCount();
92 | ui->tableWidget->setRowCount(count+1);
93 |
94 | QTableWidgetItem *itemName = new QTableWidgetItem(name);
95 | ui->tableWidget->setItem(count, 0 , itemName);
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/src/mainwindow.h:
--------------------------------------------------------------------------------
1 | #ifndef MAINWINDOW_H
2 | #define MAINWINDOW_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | namespace Ui {
11 | class MainWindow;
12 | }
13 |
14 | class MainWindow : public QMainWindow
15 | {
16 | Q_OBJECT
17 |
18 | public:
19 | explicit MainWindow(QWidget *parent = 0);
20 | ~MainWindow();
21 |
22 | private:
23 | Ui::MainWindow *ui;
24 |
25 | bool isPlay = false;
26 | QString MusicPath = "D:\\CloudMusic";
27 |
28 | QStringList fileList; //文件名称
29 | QMediaPlaylist *PlayerList;
30 | QMediaPlayer *Player;
31 | private slots:
32 | void init();
33 | void addItem(QString name); //添加tableWidget
34 | QStringList getFileNames(const QString &path); //获取路径下所有需要的文件类型文件
35 |
36 | void SlotShowCurrentMedia();
37 | void SlotButtonStart();
38 | void SlotButtonPrevious();
39 | void SlotButtonNext();
40 | };
41 |
42 | #endif // MAINWINDOW_H
43 |
--------------------------------------------------------------------------------
/src/mainwindow.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 415
10 | 493
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
-
21 |
22 |
23 | <-
24 |
25 |
26 |
27 | -
28 |
29 |
30 |
31 |
32 |
33 |
34 | -
35 |
36 |
37 | ->
38 |
39 |
40 |
41 |
42 |
43 | -
44 |
45 |
46 | true
47 |
48 |
49 |
50 | 歌曲
51 |
52 |
53 |
54 |
55 | -
56 |
57 |
58 | 歌曲
59 |
60 |
61 |
62 |
63 |
64 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/src/musicPlayer.pro:
--------------------------------------------------------------------------------
1 | #-------------------------------------------------
2 | #
3 | # Project created by QtCreator 2019-07-17T14:55:23
4 | #
5 | #-------------------------------------------------
6 |
7 | QT += core gui multimedia
8 |
9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10 |
11 | TARGET = musicPlayer
12 | TEMPLATE = app
13 |
14 | # The following define makes your compiler emit warnings if you use
15 | # any feature of Qt which has been marked as deprecated (the exact warnings
16 | # depend on your compiler). Please consult the documentation of the
17 | # deprecated API in order to know how to port your code away from it.
18 | DEFINES += QT_DEPRECATED_WARNINGS
19 |
20 | # You can also make your code fail to compile if you use deprecated APIs.
21 | # In order to do so, uncomment the following line.
22 | # You can also select to disable deprecated APIs only up to a certain version of Qt.
23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
24 |
25 |
26 | SOURCES += \
27 | main.cpp \
28 | mainwindow.cpp
29 |
30 | HEADERS += \
31 | mainwindow.h
32 |
33 | FORMS += \
34 | mainwindow.ui
35 |
36 | RESOURCES += \
37 | resource.qrc
38 |
--------------------------------------------------------------------------------
/src/pause.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChunSource/Qt-MusicPlayer-Simaple/29243d1e59503a0bea21aa74ab90e473b809ab93/src/pause.ico
--------------------------------------------------------------------------------
/src/play.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ChunSource/Qt-MusicPlayer-Simaple/29243d1e59503a0bea21aa74ab90e473b809ab93/src/play.ico
--------------------------------------------------------------------------------
/src/resource.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------