qt音乐播放器如何构建

核心控制函数

    //音乐播放器图标的点击
    connect(labVideoPlayer,SIGNAL(clicked()),this,SLOT(on_labVideoPlayer_clicked()));
    //搜索网络音乐
    connect(btnSearch,SIGNAL(clicked()),this,SLOT(on_btnSearch_clicked()));

    //网络json解析
    connect(manager ,&QNetworkAccessManager::finished,this,&VideoPlayer::search_slot);
    connect(manager1 ,&QNetworkAccessManager::finished,this,&VideoPlayer::search_slot1);

    //点击头像
    connect(roundHeadWindow,SIGNAL(clicked()),this,SLOT(on_roundHead_clicked()));
    //播放器背景皮肤
    connect(btnBackground,SIGNAL(clicked()),this,SLOT(on_btnBackground_clicked()));
    //添加本地音乐
    connect(btnAdd,SIGNAL(clicked()),this,SLOT(on_btnAdd_clicked()));
    //最小化
    connect(btnMinimize,SIGNAL(clicked()),this,SLOT(on_btnMinimize_clicked()));
    //最大化
    connect(btnMaximize,SIGNAL(clicked()),this,SLOT(on_btnMaximize_clicked()));
    //退出
    connect(btnExit,SIGNAL(clicked()),this,SLOT(on_btnExit_clicked()));

    //网络音乐列表
    connect(btnNetworkVideo,SIGNAL(clicked()),this,SLOT(on_btnNetworkVideo_clicked()));
    //本地音乐列表
    connect(btnLocalVideo,SIGNAL(clicked()),this,SLOT(on_btnLocalVideo_clicked()));


    //歌曲播放相关
    //歌曲切换
    connect(videoplayer,SIGNAL(currentMediaChanged(QMediaContent)),
            this,SLOT(currentMediaChanged()));
    //歌曲进度改变
    connect(videoplayer,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));
    //歌曲状态改变
    connect(videoplayer,SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)),
            this,SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)));
    //播放是否暂停
    connect(videoplayer,SIGNAL(stateChanged(QMediaPlayer::State)),
            this, SLOT(onStateChanged(QMediaPlayer::State)));
    //切换到上一首
    connect(btnPrevious,SIGNAL(clicked()),this,SLOT(on_btnPrevious_clicked()));
    //播放开始与暂停
    connect(btnPlay,SIGNAL(clicked()),this,SLOT(on_btnPlay_clicked()));
    //切换到下一首
    connect(btnNext,SIGNAL(clicked()),this,SLOT(on_btnNext_clicked()));
    //静音切换
    connect(btnMute,SIGNAL(clicked()),this,SLOT(on_btnMute_clicked()));
    //调整音乐声音
    connect(sliderMute,SIGNAL(valueChanged(int)),this,SLOT(on_sliderMute_valueChanged(int)));
    //切换列表播放方式
    connect(btnPlayMode,SIGNAL(clicked()),this,SLOT(on_btnPlayMode_clicked()));
    //双击播放网络音乐
    connect(listWidgetNetworkVideo,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(on_listWidgetNetworkVideo_doubleClicked(QModelIndex)));
    //双击播放本地音乐
    connect(listWidgetLocalVideo,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(on_listWidgetLocalVideo_doubleClicked(QModelIndex)));

核心UI函数


//UI创建与初始化
void VideoPlayer::initUI()
{
    BackgroundPicturePath = ":/videoplayer/videoplayer_background/back1.jpg";
    //去掉标题栏
    setWindowFlag(Qt::FramelessWindowHint);
    //视频播放器的图标
    labVideoPlayer = new PressLabel();
    labVideoPlayer->setText("Licona视频");
    QFont font;
    font.setWeight(80);
    font.setPointSize(25);
    labVideoPlayer->setFont(font);
    //视频搜索框
    lineEditSearch = new QLineEdit;
    lineEditSearch->setStyleSheet("QLineEdit{"
                                "border: none;"
                                "background-color: rgba(255, 255, 255, 150);"
                                "border-style: outset;"
                                "border-width: 0px;"
                                "border-radius: 10px;"
                                "font: bold 14px;"
                                "color: rgba(0,0,0,100);"
                                "padding: 6px;"
                                "}");
    lineEditSearch->setPlaceholderText("搜索歌曲mv");
    lineEditSearch->setMinimumWidth(50);

    //搜索按钮
    btnSearch = new SearchButton;

    //头像
    roundHeadWindow = new RoundHead(this,20);

    //姓名
    btnUsername = new QToolButton;
    btnUsername->setStyleSheet("QToolButton{border:none;}");
    SqliteDB sqliteDB;
    sqliteDB.establishDB();
    QString username;
    username=sqliteDB.readAccountData().username;
    btnUsername->setText(username);
    sqliteDB.closeDB();

    //播放器背景皮肤
    btnBackground = new QToolButton;
    btnBackground->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/skin.png);}");

    //添加本地歌曲按钮
    btnAdd = new QToolButton;
    btnAdd->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/add.png);}");

    //最小化按钮
    btnMinimize = new QToolButton;
    btnMinimize->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/minimum.png);}");

    //最大化按钮
    btnMaximize = new QToolButton;
    btnMaximize->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/maximum.png);}");

    //退出按钮
    btnExit = new QToolButton;
    btnExit->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/exit.png);}");


    QHBoxLayout *HLay1 = new QHBoxLayout;
    HLay1->addWidget(labVideoPlayer);
    HLay1->addSpacing(30);
    HLay1->addWidget(lineEditSearch);
    HLay1->addWidget(btnSearch);
    HLay1->addStretch();
    HLay1->addWidget(roundHeadWindow);
    HLay1->addWidget(btnUsername);
    HLay1->addSpacing(30);
    HLay1->addWidget(btnBackground);
    HLay1->addSpacing(50);
    HLay1->addWidget(btnAdd);
    HLay1->addWidget(btnMinimize);
    HLay1->addWidget(btnMaximize);
    HLay1->addWidget(btnExit);

    videoWidget = new VideoWidget();

    btnNetworkVideo = new QToolButton;
    btnNetworkVideo->setText("网络");
    btnNetworkVideo->setStyleSheet("QToolButton{border:none;} QToolButton::hover{background-color: rgba(255, 255, 255,150);}");
    btnLocalVideo = new QToolButton;
    btnLocalVideo->setText("本地");
    btnLocalVideo->setStyleSheet("QToolButton{border:none;} QToolButton::hover{background-color: rgba(255, 255, 255,150);}");
    QHBoxLayout *HLay2 = new QHBoxLayout;
    HLay2->addWidget(btnNetworkVideo);
    HLay2->addWidget(btnLocalVideo);
    stackedWidget = new QStackedWidget;
    //网络播放列表
    listWidgetNetworkVideo = new QListWidget();
    listWidgetNetworkVideo->setStyleSheet("QListWidget{"
                                  "background-color:transparent;"
                                  "border-style: solid;"
                                  "border-left-width: 1px;"
                                  "border-right-width: 1px;"
                                  "border-top-width: 1px;"
                                  "border-bottom-width: 1px;"
                                  "}");
    listWidgetLocalVideo = new QListWidget();
    listWidgetLocalVideo->setStyleSheet("QListWidget{"
                                  "background-color:transparent;"
                                  "border-style: solid;"
                                  "border-left-width: 1px;"
                                  "border-right-width: 1px;"
                                  "border-top-width: 1px;"
                                  "border-bottom-width: 1px;"
                                  "}");
    stackedWidget->addWidget(listWidgetNetworkVideo);
    stackedWidget->addWidget(listWidgetLocalVideo);
    stackedWidget->setCurrentIndex(0);
    QVBoxLayout *VLay2 = new QVBoxLayout;
    VLay2->addLayout(HLay2);
    VLay2->addWidget(stackedWidget);
    QHBoxLayout *HLay4 = new QHBoxLayout();
    HLay4->addWidget(videoWidget,3);
    HLay4->addSpacing(15);
    HLay4->addLayout(VLay2,1);
    HLay4->setMargin(15);


    //播放控制
    labVideoInfo = new QLabel;
    labVideoInfo->setText("无曲目");

    btnPrevious = new QToolButton;
    btnPrevious->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/previous.png);}");

    btnPlay = new QToolButton;
    btnPlay->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/stop.png);}");

    btnNext = new QToolButton;
    btnNext->setStyleSheet("QToolButton{border:none; border-image:url(:/videoplayer/videoplayer_icons/next.png);}");

    labCurrentTime = new QLabel;
    labCurrentTime->setText("00:00:00");

    QFile qssFile(":/qslider/qslider_style/style.qss");
    qssFile.open(QFile::ReadOnly);
    QString qss;
    qss = qssFile.readAll();
    this->setStyleSheet(qss);
    sliderDuration = new QSlider(Qt::Horizontal);


    labTotalTime = new QLabel;
    labTotalTime->setText("00:00:00");

    btnMute = new QToolButton;
    btnMute->setStyleSheet("QToolButton{border:none;border-image: url(:/videoplayer/videoplayer_icons/voice.png);}");

    sliderMute = new QSlider(Qt::Horizontal);

    //播放模式,按钮属性设置
    playMode = "顺序播放";
    btnPlayMode = new QToolButton;
    btnPlayMode->setStyleSheet("QToolButton{border:none;border-image: url(:/videoplayer/videoplayer_icons/inorder.png);}");


    QHBoxLayout *HLay5 = new QHBoxLayout;
    HLay5->addSpacing(20);
    HLay5->addWidget(labVideoInfo);
    HLay5->addWidget(btnPrevious);
    HLay5->addWidget(btnPlay);
    HLay5->addWidget(btnNext);
    HLay5->addStretch();
    HLay5->addWidget(labCurrentTime);
    HLay5->addWidget(sliderDuration);
    HLay5->addWidget(labTotalTime);
    HLay5->addStretch();
    HLay5->addWidget(btnMute);
    HLay5->addWidget(sliderMute);
    HLay5->addWidget(btnPlayMode);
    HLay5->addSpacing(15);

    QVBoxLayout *VLay3 = new QVBoxLayout;
    VLay3->addLayout(HLay1);
    VLay3->addLayout(HLay4);
    VLay3->addLayout(HLay5);

    setLayout(VLay3);

    setFixedSize(900,900);

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值