专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Qt5QMediaPlayer音乐播放器

  1、先上效果图:
  好了,现在讲讲我是怎么写的吧,首先最基本的播放歌曲代码应该就是:QMediaPlayermusicnewQMediaPlayer(this);初始化音乐QMediaPlaylistplaylistnewQMediaPlaylist(this);初始化播放列表playlistsetPlaybackMode(QMediaPlaylist::Loop);设置播放模式(顺序播放,单曲循环,随机播放等)playlistaddMedia(QUrl::fromLocalFile(D:xxyymm。mp3));添加歌曲,这里添加的是歌曲的路径playlistaddMedia(QUrl::fromLocalFile(D:xxyymm2。mp3));添加歌曲,这里添加的是歌曲的路径musicsetPlaylist(playlist);设置播放列表musicplay();播放歌曲
  这样就能按播放列表来播放了
  然后playlist里面的歌曲是看不到的,就需要一个列表来显示歌曲,我用的是QListWidget,这样的话,只需要把列表项与playlist里面的歌曲对应上就可以了,然后要保存歌曲,数据库自然就少不了了,可以用Qt自带的数据库QSQLITE,然后创建数据库和表,写个函数
  【领QT开发教程学习资料,点击下方链接莬费领取,先码住不迷路】
  点击领取链接staticboolCreatConnection(){QSqlDatabasedbQSqlDatabase::addDatabase(QSQLITE);建库db。setDatabaseName(mymusic。db);给数据库起名字if(!db。open()){returnfalse;}QSqlQueryquery;query。exec(QString(createtableLocalMusic(idint,MusicNamevarchar,FileNamevarchar,primarykey(id,MusicName,FileName))));本地音乐列表数据,把歌曲名和歌曲路径给存起来returntrue;}
  在main函数中先执行这个函数,创建个数据库即可。
  添加歌曲:QListWidgetlistnewQListWidget(this);QSqlQueryquery;QStringListlistQFileDialog::getOpenFileNames(this,QString::fromLocal8Bit(文件),currentFileName〔1〕,QString::fromLocal8Bit(音频文件(。mp3)));用个文件登陆框来选择。mp3文件,包括多个文件if(!list。isEmpty()){for(inti0;ilist。size();i){QStringpathQDir::toNativeSeparators(list。at(i));playlistaddMedia(QUrl::fromLocalFile(path));QStringNamepath。split()。last();QListWidgetItemitemnewQListWidgetItem(QIcon(图片。png),Name);itemsetToolTip(Name);listaddItem(item);query。exec(QString(insertintovalues(1,2,3))。arg(i)。arg(Name)。arg(path);}}
  这样就列表上就可以显示歌曲了,并且把歌曲信息保存到数据库里了,可以在初始化的时候把数据库的歌名添加到列表中即list,把歌曲路径添加到播放列表中即playlist,但是显示的歌曲如果太多就会出现滚动条,默认的滚动条貌似不是很好看,可以用一下代码美化滚动条QStringlistWidgetStyleQScrollBar:vertical{width:8px;backgroundcolor:transparent;margin:0px,0px,0px,0px;paddingtop:12px;上预留位置paddingbottom:12px;下预留位置}QScrollBar::handle:vertical{width:8px;backgroundcolor:rgba(255,255,255,0。2);borderradius:4px;minheight:20px;}QScrollBar::handle:vertical:hover{width:9px;backgroundcolor:rgba(255,255,255,0。5);borderradius:4px;minheight:20;}QScrollBar::addline:vertical{height:12px;width:10px;borderimage:url(:selectfilescroll3。png);subcontrolposition:bottom;}QScrollBar::subline:vertical{height:12px;width:10px;borderimage:url(:selectfilescroll1。png);subcontrolposition:top;}QScrollBar::addline:vertical:hover{height:12px;width:10px;borderimage:url(:selectfilescroll4。png);subcontrolposition:bottom;}QScrollBar::subline:vertical:hover{height:12px;width:10px;borderimage:url(:selectfilescroll2。png);subcontrolposition:top;}QScrollBar::addpage:vertical,QScrollBar::subpage:vertical{backgroundcolor:transparent;borderradius:4px;};uilistverticalScrollBar()setStyleSheet(listWidgetStyle);
  然后就是得有个进度条,和歌曲时间
  进度条,进度条自然是用QHorizontalSlider了,主要就是歌曲进度得随着播放进度变化,所以可以使用信号和槽,QMediaPlayer有两个信号,QMediaPlayer::positionChanged和QMediaPlayer::durationChanged,分别是当前歌曲播放位置的变化,和切换歌曲时的歌曲长度,那么就需要写两个槽来接收这两个信号了1。voidWidget::updatePosition(qint64position)接收歌曲位置改变,那么滑块的位置也要变{uihorizontalSlidersetValue(position);设置滑块位置}2voidWidget::updateDuration(qint64duration)更新播放歌曲的时间{uihorizontalSlidersetRange(0,duration);根据播放时长来设置滑块的范围uihorizontalSlidersetEnabled(duration0);uihorizontalSlidersetPageStep(duration10);以及每一步的步数}
  然后将他们连接就可以了connect(music,QMediaPlayer::positionChanged,this,Widget::updatePosition);connect(music,QMediaPlayer::durationChanged,this,Widget::updateDuration);
  还有就是列表选中的歌曲也要跟着playlist的歌曲变化来变化,需要利用QMediaPlaylist::currentIndexChanged信号,故写槽:voidWidget::updateList(intvalue){uilistitem(value)setSelected(true);}
  然后connect(playlist,QMediaPlaylist::currentIndexChanged,this,Widget::updateList);
  播放暂停的话就直接点播放个按钮就musicplay();点个暂停按钮就musicpuase();
  然后还有就是时间的转换,mp3的时间是用毫秒来算的,那么就要变成分钟:秒的格式,可以写个函数来转换:staticQStringTime(qint64time)转换时间{qint64secondstime1000;constqint64minutesseconds60;secondsminutes60;returnQStringLiteral(1:2)。arg(minutes,2,10,QLatin1Char(0))。arg(seconds,2,10,QLatin1Char(0));}
  然后还有播放模式,其实就是为playlist设置播放模式就可以了,比如顺序播放playlistsetPlaybackMode(QMediaPlaylist::Loop);
  单曲循环playlistsetPlaybackMode(QMediaPlaylist::CurrentItemInLoop);,随机播放playlistsetPlaybackMode(QMediaPlaylist::Random);等
  上一首和下一首也很容易
  上一首:当上一首按钮点击执行voidWidget::preMusic(){introwplaylistmediaCount();获取歌曲数量intcurrentplaylistcurrentIndex();获取当前位置if(current0){current0;}playlistsetCurrentIndex(current);设置当前音乐uilistscrollToItem(uilistitem(current));滚动到当前音乐musicplay();播放}
  下一首:点击下一首按钮时执行voidWidget::nextMusic(){introwplaylistmediaCount();获取歌曲数量intcurrentplaylistcurrentIndex();获取当前位置if(currentrow){current0;}playlistsetCurrentIndex(current);设置当前音乐uilistscrollToItem(uilistitem(current));滚动到当前音乐musicplay();播放}
  歌曲定位也很好做,歌曲定位:点击歌曲定位按钮执行voidgetIndex(){uilistitem(playlistcurrentIndex())setSelected(true);}
  基本这样就可以做出来了。

46岁马伊琍低调现身街头!穿拖鞋睡衣无架子,与神秘男子遛狗逛街近日,有知名八卦媒体在社交平台上晒出一组有关马伊琍的近照,也是曝光了她的近况,当天她还与一位神秘的中年男子同行,两人看上去关系非常的好,对于许久都未曾露面的马伊琍,也是引来无数网友九华山一位神秘的点灯老和尚,给我点燃一盏长久不熄的心灯一件悟解心开的往事有一年我在九华山偶遇一位神秘的老和尚,他负责在庙里点灯,给我一番开示,让我燃起内心的心灯。那年我沉迷修行,虽然对佛法之事一知半解,但是很有渴望,修行了几年后,去各洛阳一村民迁葬祖坟,挖出五花夯土,老人看过后下面有古墓2015年,洛阳万安山,一村民在迁葬祖坟时,突然挖出大量青白相杂的泥土,像极了五花夯土。村民大吃一惊,连忙取出一些泥土,交给家里的老人分析,老人看过后,凝重道下面有古墓!01。迁葬关于古代女子的缠足陋习缠足是中国古代一种陋习,是指女性用布将双脚紧紧缠裹,使其脚畸形变小,以为美观。一般女性从四五岁起便开始缠足,直到成年骨骼定型后方将布带解开,也有终身缠裹者。关于缠足的起源,从明清时1200万股拍出4。62亿元中炬高新神秘买家成立仅一周来源证券日报现任中炬高新控股股东中山润田持有的中炬高新1200万股股份,被一位神秘买家拍得。12月15日,中炬高新公告称,深圳讯方商业管理有限公司(下称深圳讯方)经公开竞价在阿里巴穿越到古代,与西南贵族一起ampampquot吃喝玩乐ampampquot!贵州省博物馆发布招募令能参加一场古代的宴会是一种什么体验?前不久,生活在两千多年前的夜郎王穿越到贵州省博物馆,在这里精心布置了一场盛大的筵席,西南诸国的巴王蜀王滇。王骆越王等拿着家中的珍宝前往赴宴,席上微谈天下长平之战为什么注定是赵国兵败?春秋战国时期,秦国与赵国的长平之战,真正的让秦国把韩魏赵三国打得毫无还手之力。此后,秦国的东进也再无阻碍,统一中华指日可待。古今中外,很多的人都在研究秦国之胜利或是赵国之失败,我个隋文帝杨坚临终时,为何骂杨广畜生何足付大事?独孤误我!古往今来,隋炀帝杨广往往被认为是一代荒淫无度残暴不仁的昏君,其实我们更应去探求历史真相,包括他夺皇位的谋略与心机等。隋文帝杨坚与独孤皇后,一共生了五个儿子,其中最有出息的是长子杨勇朱元璋出生地之谜是凤阳出了个朱皇帝,还是盱眙出了个朱重八?黔府历史笔记文一般来说,朱元璋生于今安徽凤阳是为大多数人所接受的定论,但近年来关于朱元璋出生地的争论屡屡发生,甚至有被盱眙说和明光说推翻的可能。而对于前者是有早期官方文献作为依据的美国独立运动是因为殖民地喝不起茶1492年8月3日,哥伦布奉西班牙国王之命,携带着写给印度君主和中国皇帝的国书,率领三艘百十来吨的帆船,和由87名水手组成的船队,从巴罗斯港出发,横渡大西洋前往东方。10月12日,漂亮国女州长再次大赦天下,沽名钓誉还是闲得蛋疼?这昏君有话说东汉光和元年怪事连连官署母鸡变性打起了鸣天子寝宫东边院子天降黑气洛阳坊间有匹马居然生了一个人皇帝刘宏心神不宁,责成大臣解释。议郎蔡邕说了一句话,皇帝立刻要将他斩首。当时蔡邕说的正是
人生,放过自己,别想太多文飞鱼01hr为什么你会活得那么狼狈,活得那么心累,活得那么疲惫?其实就是你不放过自己,处处跟自己过不去,总是想太多,总是爱胡思乱想。丰子恺说,你若爱,生活哪里都可爱。你若恨,生活比利时公主举办平民婚礼,长相老气被吐槽二婚,她可是中国通婚恋手册34岁的比利时公主玛丽亚劳拉(MariaLaura)周六与她的男友,英国投资银行家威廉伊斯维(WilliamIsvy)喜结连理。由于伊斯维先生是犹太人,而玛丽亚公主是天主教最美外交官傅莹69岁一头白发风姿优雅,穿衣打扮得体气质满头青丝渐斑白,燃不尽的是落落大方,气质如兰,气势如虹。国外金融时报是这样评价她的(傅莹女士)仪态优雅,笑容灿烂。她很有魅力,魅力也是可以作为武器的。被誉为中国最美外交官的傅莹,总日常通勤都离不开,就看这只简约清新的托特包包作为面积最大的一个配饰,在穿搭中占据着不可或缺的地位因为实用性太高了,女生出门可以不戴帽子,但不可以不背包。女孩子出门,要带的东西实在太多,一款能装又有颜值的包就格外重要。托特包设计出众又有质感,PANDAER配件产品是iPhone14的黄金搭档9月16日,iPhone14系列开售,如果你是选择到线下Applestore自提,想必现在已经拿到了新手机。不过如果你没有提前买好手机壳,建议你先不要着急使用新iPhone,毕竟i国家统计局猪肉价格不具备大幅上涨基础保供稳价的措施效应会持续显现来源央视新闻客户端国新办今天(16日)上午举行新闻发布会,国家统计局新闻发言人国民经济综合统计司司长付凌晖介绍,今年以来,全球通胀压力是持续加大的,欧美主要经济体通胀水平都达到了8航班信息丨西藏各机场9月17日航班情况提示(含特别提示)尊敬的各位旅客特别提示根据四川省疫情防控最新要求,9月17日起,近7日内有西藏旅居史的来(返)川人员,须持有近5日内3次(每次间隔24小时及以上)核酸检测阴性证明,且最后一次核酸采辛巴将性价比优势与供应链结合,帮扶小店传递爱心让公益可持续如果说直播电商像是一片树叶,那么供应链就像是输送养分的叶脉。以头部直播电商企业辛选集团的供应链为例,辛巴辛有志成功与国内外7000多家优秀品牌合作,整合了超过3000家高规格工厂的国青球员尤文杰战乌兹别克感觉可以拿下,我们就是冲沙特来的直播吧9月17日讯在今天凌晨进行的U20亚洲杯预选赛中,U19国足12不敌乌兹别克斯坦国青。赛后,担任本场比赛队长的尤文杰在接受体坛周报采访时表示,感觉可以拿下这场比赛,球队参加亚为什么这款豪华智能手表无法击败苹果手表当我们决定制造智能手表时,我们的灵感来自从我们的历史中获取一些东西,并赋予它智能技术。我们正试图将制表的故事带入智能手表。对我们来说是真实的东西这就是万宝龙新技术类别总监Felix武磊和队友踢球的感觉正慢慢找回来巴尔加斯肯定能帮助球队直播吧9月16日讯近日,武磊和巴尔加斯一直随海港队在世纪公园球场进行训练。据海港队跟队记者刘闻超透露,从目前情况来看,武磊和巴尔加斯具备了出场比赛的条件。在接受采访时,武磊和新援巴
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网