当前位置: 首页 > news >正文

网站建设收费标准策划wordpress免费公司官网主题

网站建设收费标准策划,wordpress免费公司官网主题,北京网易公司是做什么的,大型网站建设问题:ui界面文件的spacer效果不是我所想的,可能还不太熟练spacer的使用,所以固定了窗口大小 可改进点:没有添加播放器背景,可在paintevent重载,自行添加想要背景 主要所使用的知识:qt文件对话框…

问题:ui界面文件的spacer效果不是我所想的,可能还不太熟练spacer的使用,所以固定了窗口大小
可改进点:没有添加播放器背景,可在paintevent重载,自行添加想要背景
主要所使用的知识:qt文件对话框和qfile的使用,qt媒体的配置和使用,qurl的使用
注意事项:记得在.pro文件添加多媒体模块,负责无法使用媒体播放器
.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QFileDialog>
#include <QDir>
#include <QMediaPlayer>
#include <QAudioOutput>
#include <QUrl>
#include <QString>
#include <QPainter>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_clicked();void on_pushButton_6_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_listWidget_doubleClicked(const QModelIndex &index);void loadMusicFromDirectory(const QString& directoryPath);void on_pushButton_7_clicked();// protected:
//     void paintEvent(QPaintEvent* event) override;private:Ui::Widget *ui;const QString windowTitle = "musicPlayer2025";bool isVoiceSliderVisible = false;QList<QUrl> playList;QAudioOutput* audioOutput;QMediaPlayer* mediaPlayer;int curPlayIndex = 0;
};
#endif // WIDGET_H

.cpp文件

#include "widget.h"
#include "ui_widget.h"#define defaultVolume 0.5Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle(windowTitle);//固定窗口大小,不知为什么ui界面里的spacer有问题this->setFixedSize(709,709);//使voiceSlider隐藏,如果需要显示点击即可ui->voiceSlider->setVisible(isVoiceSliderVisible);// 播放音乐,先加载模块multimediaaudioOutput = new QAudioOutput(this);mediaPlayer = new QMediaPlayer(this);mediaPlayer->setAudioOutput(audioOutput);// 设置默认音量为 50%(即音量为 0.5)audioOutput->setVolume(defaultVolume);ui->voiceSlider->setRange(0, 100);ui->voiceSlider->setValue(defaultVolume * 100);// 获取当前媒体的时长connect(mediaPlayer, &QMediaPlayer::durationChanged, this, [=](qint64 duration) {ui->totallabel->setText(QString("%1:%2").arg(duration / 1000 / 60, 2, 10, QChar('0')).arg(duration / 1000 % 60));// 显示播放时长ui->playCourseSlider->setRange(0, duration);});//获取当前媒体音量// 获取当前播放时长connect(mediaPlayer, &QMediaPlayer::positionChanged, this, [=](qint64 pos) {ui->curlabel->setText(QString("%1:%2").arg(pos / 1000 / 60, 2, 10, QChar('0')).arg(pos / 1000 % 60));// 显示播放时长ui->playCourseSlider->setValue(pos);});// 拖到滑块让播放进度改变connect(ui->playCourseSlider, &QSlider::sliderMoved, mediaPlayer, &QMediaPlayer::setPosition);// 拖动音量滑块调整播放音量connect(ui->voiceSlider, &QSlider::valueChanged, this, [=](int value) {// 将滑块的值映射到音量范围 [0.0, 1.0]qreal volume = value / 100.0;audioOutput->setVolume(volume);});// 默认加载音乐目录并更新播放列表loadMusicFromDirectory("C:/Users/20834/Music/");
}Widget::~Widget()
{delete ui;
}void Widget::loadMusicFromDirectory(const QString& directoryPath)
{qInfo() << tr("打开音乐所在目录");// 打开指定目录auto path = directoryPath;// 根据这个路径获取音乐文件QDir dir(path);auto musicList = dir.entryList(QStringList() << "*.mp3" << "*.wav");// 输出音乐列表if (musicList.isEmpty()){qInfo() << tr("未获取相关音乐文件");}else{qInfo() << musicList;}ui->listWidget->clear();  // 清空现有列表ui->listWidget->addItems(musicList);// 默认选中第一个音乐if (!musicList.isEmpty())ui->listWidget->setCurrentRow(0);// 把音乐完整路径保存起来playList.clear();  // 清空已有列表,避免重复添加for (auto file : musicList){playList.append(QUrl::fromLocalFile(path + "/" + file));}qInfo() << playList;
}void Widget::on_pushButton_clicked()//选取音乐所在的目录
{// 你可以保留此方法用于用户手动选择其他目录qInfo() << tr("打开音乐所在目录");// 打开目录auto path = QFileDialog::getExistingDirectory(this, tr("请选择音乐所在的目录"), "C:/Users/20834/Music/");qInfo() << path;loadMusicFromDirectory(path);
}void Widget::on_pushButton_6_clicked()//播放或暂停按钮的配置
{if(playList.empty())return;switch(mediaPlayer->playbackState()){case QMediaPlayer::PlaybackState::StoppedState:{// 播放当前选中的音乐curPlayIndex = ui->listWidget->currentRow();  // 获取选中的行数// 检查索引是否有效if (curPlayIndex >= 0 && curPlayIndex < playList.size()){mediaPlayer->setSource(playList[curPlayIndex]);mediaPlayer->play();}else{qWarning() << tr("无效的选项,无法播放音乐");}break;}case QMediaPlayer::PlaybackState::PlayingState:{mediaPlayer->pause();break;}case QMediaPlayer::PlaybackState::PausedState:{mediaPlayer->play();break;}}
}void Widget::on_pushButton_3_clicked() // 上一曲
{curPlayIndex--;if(curPlayIndex <= 0){curPlayIndex = playList.size() - 1;}ui->listWidget->setCurrentRow(curPlayIndex);mediaPlayer->setSource(playList[curPlayIndex]);mediaPlayer->play();
}void Widget::on_pushButton_4_clicked() // 下一曲
{curPlayIndex++;if(curPlayIndex >= playList.size()){curPlayIndex = 0;}ui->listWidget->setCurrentRow(curPlayIndex);mediaPlayer->setSource(playList[curPlayIndex]);mediaPlayer->play();
}void Widget::on_listWidget_doubleClicked(const QModelIndex &index)//双击列表歌曲播放
{curPlayIndex = index.row();mediaPlayer->setSource(playList[curPlayIndex]);mediaPlayer->play();
}void Widget::on_pushButton_7_clicked()//音量调节
{isVoiceSliderVisible = !isVoiceSliderVisible;ui->voiceSlider->setVisible(isVoiceSliderVisible);
}// void Widget::paintEvent(QPaintEvent* event) //背景添加
// {// }
http://www.dtcms.com/a/530276.html

相关文章:

  • 怎么制作网站封面用插件做网站
  • 华宁县住房和城乡建设局网站数字营销专业就业前景
  • 重庆荣昌网站建设报价服装设计怎么学
  • ISO18000-6C协议UHF6C超高频RFID读写C#源码
  • 泉州网站建设推广企业电子商务网站建设的目的是开展网络营销
  • (五)Gradle 依赖传递与冲突处理
  • 百度建站企业年报查询
  • js 网站制作信誉好的品牌网站建设
  • Java事故排查
  • 阿里云建网站步骤房地产开发建设工程口碑好
  • 手机网站开发有前途建设网站需要什么
  • 网站建设课程性质免费诶网站建设
  • 网站开发需求预算重庆市建设工程信息网安全标准化评价系统
  • 南宁做网站推广nnsomwordpress如何网址大全
  • 亿网万联佛山seo优化评价
  • 杨和网站设计制作优化网站做内链接
  • 网站建设前准备seo综合诊断工具
  • 动态规划入门1 - 爬楼梯问题,从递归到动态规划的完美演绎
  • 【GTest 】GTest 详解以及安装教程
  • 网站建设的实践报告怎么查询自己的二建信息
  • 高端品牌网站建设案例网站开发方向学啥
  • 绿色做环保网站的好处主机如何做服务器建网站
  • 宜宾网站建设宜宾wordpress用户筛选
  • 华为自助建站做钓鱼网站要具备什么
  • 企业营销型网站制作多少钱杭州cms建站模板
  • 怎么做简单地网站网站的备案流程
  • 网站开发能进入无形资产吗太原百度做网站多少钱
  • 【gflags 】gflags 详解以及安装教程
  • 网站系统 建设和软件岗位职责微信小程序一起生活怎么注册
  • 网站 vps网站开发的流程