




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中北大学2014届毕业设计说明书基于QT的ktv点歌系统毕业论文目 录1 概述11.1 题目背景11.2 项目现状与分析11.3 研究意义22需求分析32.1 项目的内容及要求32.2 可行性分析32.2.1 经济可行性32.2.2 技术可行性开发语言42.3 开发工具论述42.3.1 前台开发工具42.3.2 后台数据库43系统设计63.1 系统功能分析63.2 系统数据库设计74系统行为特性设计84.1 软件结构设计84.1.1 自动点播系统点播模块设计84.1.2 播放控制模块104.2 功能子模块设计114.2.1 拼音点播子模块114.2.2 字数点播子模块124.2.3 歌星点播子模块134.2.4 语种点播子模块134.2.5 播放控制子模块14第II 页 共页4.3 代码实现155系统运行与调试685.1 系统测试方案685.2 系统结果分析与调试69结 论70参考文献71致 谢72第页 共页中北大学2014届毕业设计说明书1 概述1.1 题目背景在计算机技术1日益发展的今天,各个企业,家庭对计算机技术的要求越来越高,为了满足企业,家庭的需要,就需要开发各种软件。自动点播系统2,将经压缩的视频和间频信号储存在网络视频服务器3上的超大容量、高速硬盘中,播放时由连接在网络上的电脑将视频和音频信号解压后输出到显示器或者电视机上。采用专用视频服务器代替了传统的影碟播放,设备内容丰富,全部采用DVD影碟4且可自由增加歌曲。实现了全自动的视频点播,所以无需影碟机也无需再经DJ取碟和放碟等人工操作。自动点播系统完全取代了传统的播放设备,它自动化程度高,无需人工控制播放。既避免了人为的错误,又降低了经营成本。该系统不受房间限制,一首歌可供多个用户同时点播,完全消除了传统系统的撞碟抢歌现象。该系统采用先进的数字压缩方法,图像质量采用DVD,音质能达到5.1水准。在网络传送中,视音频不会有任何失真、衰减及干扰,歌曲反复使用也不会对图像产生影响。歌曲可选择原人原唱的演唱会、MTV5等。随着科技的发展,人类的进步,现在人们的生活水平在逐渐的提高,为了丰富人们的业余生活,减轻人们工作的压力增加一些娱乐设施是必不可少的,自动点播系统正是为了丰富满足家庭业余生活开发的。1.2 项目现状与分析自动点播系统从很早以前就开始进行研发与应用,经过多年的经验摸索,不断地完善改进和升级,使得它更安全、更稳定、更完善。无论夜总会型,还是量贩式型的KTV都可以使用,该系统加上优质的歌库,并与点播辅助工具和外围歌厅设备一起使用时,可称之为一套功能强大、可靠性高、实用性好、画优音美的全自动卡拉OK点播系统,绝对领导着KTV点播6设备的新潮流。 全套系统是架构在计算机网络上的,由电脑来自动管理,无需碟机亦无需人员操作,极大地提高了经营效率。该系统从歌曲录制编辑、歌曲库的自动生成、点播软件的功能、界面的多样性和美观性、客人的使用人性化、前后台管理的多样性和方便性、与各种外围点播设备的结合、有各类歌曲的提供等方面,形成了完整的解决方案,是一套集大成的全面先进的系统。随着计算机技术的发展,人们不仅使用单一的文字作为信息的载体,还可以通过各种各样的媒体来传递、存储信息。我们通常所说的媒体(Media)包括其中的两点含义。一是指信息的物理载体(即存储和传递信息的实体),如书本、挂图、磁盘、光盘、磁带以及相关的播放设备等;另一层含义是指信息的表现形式(或者说传播形式),如文字、声音、图像、动画等。多媒体计算机中所说的媒体,是指后者而言,即计算机不仅能处理文字、数值之类的信息,而且还能处理声音、图形、电视图像等各种不同形式的信息。 对各种信息媒体的处理,是指计算机能够对它们进行获取、编辑、存储、检索、展示、传输等各种操作。一般而言,具有对多种媒体进行处理能力的计算机可称为多媒体计算机。 自动点播系统是一款及多媒体播放,音频消原唱,歌词显示于一体的大众化软件。如果你想在自己的电脑上过把KTV瘾,那么本软件将实现你的愿望。无须复杂的设置,即刻让你感受到在家里演唱卡拉OK的氛围。愿这款软件给你的生活带来一种新的乐趣。1.3 研究意义该系统是在实际调研的基础上,针对现在人们现实生活当中需求情况来进行系统开发,因此它具有较强的实用性.该系统有如下特点: 先进的管理思想歌曲信息数据集中管理,最大程度上实现高效管理。模块化的软件结构各个模块都可以单独运行。提供良好的人机交互界面,操作简单快捷。可以对大量歌曲信息进行处理,检索迅速7,查找方便,可靠性高。当今社会里人们的生活水平在不断提高,工作压力也越来越大,人们需要有个能够减少压力的环境,唱歌是一个比较好的方式,所以开发了自动点播系统.该系统实现了对各种歌曲管理,满足人们的点播要求,这样人们可以点播各种各样的歌曲进行选唱。第 3 页 共 72页 中北大学2014届毕业设计说明书2需求分析2.1 项目的内容及要求喜爱唱歌的朋友一定很喜欢MTV。当您看到那些美妙的画面,是不是特想按照自己的意愿为自己钟爱的歌曲设计精美且有意义的MTV呢?自动点播系统是一款及多媒体播放,音频消原唱,麦克风演唱的大众软件。随着计算机的普及,科技的飞速发展,人们的生活水平在日益提高,开发自动点播系统为了更加丰富人们的业余生活和减轻工作压力。该系统针对实际情况,在对人们的需求情况的基础上来进行系统设计和开发。它的系统功能要求如下:(1) 管理各种歌曲(2) 调整音箱效果:原唱/伴奏(3) 点播方式:按歌曲首字母查找点播;按歌星点歌;按歌曲字数点歌;按语种点播;(4) 点播曲目管理:删除误选的歌曲2.2 可行性分析 开发本系统要从它的经济和技术角度进行全面考虑,要在利用最少的经济条件,把系统的功能都实现。2.2.1 经济可行性随着人们生活水平的不断提高,工作压力也越来越繁大,根据这个形势,就需要一些娱乐设施来减轻人们的生活负担,同时还能丰富业余生活。开发自动点播系统是一个很好的方法,它以较低的成本达到人们满意的效果。本软件的成本费用:目前,在市场上购买一台普通PC机大约需要30004000元,开源的Qt Creator8免费,购买正版的Windows2000大约需要2000元,此系统开发工作人员的三个月工资大约要10000元,做系统调研及各种资料费等各种费用大约需要5000元。电费等其他各种费用大约需要1000元。自动点播系统是我根据现在人们生活的实际情况,在考虑到系统的可行性:目标和方案可行性,技术可行性,经济方面的可行性等。因素的基础上进行开发的。它针对管理中的实际情况,能够解决一些实际问题,对各种歌曲信息进行管理,条理非常清晰,用户便于操作。而且克服了购买现成软件存在的专用性较差的问题。当然,它也存在一些不足之处,需要不断的完善。2.2.2 技术可行性开发语言该系统前台我使用的Qt Creator作为开发工具,后台数据库使用SQLite8, 该软件的开发是在windows操作系统下进行,利用Qt Creator工具进行开发,不需要任何大型的系统软件和应用软件来支持。该系统是一个多媒体播放的娱乐软件,对该软件的操作不需要高配置的计算机,只要在该计算机上能够运行Windows 操作系统即可,也不需要高配置的计算机来开发和运行该软件。目前,开发者熟悉Qt Creator和Windows操作系统,具有开发大型软件的能力。综上,开发该管理软件具有技术可行性的。2.3 开发工具论述本软件为自动点播系统,要对各种歌曲进行管理。因此,本软件前台使用Qt Creator作为开发工具,后台数据库使用SQLite。2.3.1 前台开发工具前台使用诺基亚公司的Qt Creator作为开发工具。Qt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Windows。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。2.3.2 后台数据库后台数据库采用SQLite来实现。SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql9、PostgreSQL10这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。 第 69 页 共 72页 中北大学2014届毕业设计说明书3系统设计系统设计又称系统物理设计。它根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可利用的技术手段和方法进行具体设计,确定新系统的实施方案,解决系统怎么做的问题。该系统的总体任务是管理各种歌曲,按原唱者姓名和姓名首字(字母)查找点播;按歌曲首字母查找点播;按歌曲作者查找点播;按歌曲国别查找点播;按影视名称查找歌曲点播等;选中的曲目排队/选中的曲目优先被点唱。在系统调研的基础上,对系统的功能进行细致的分析,并建立一个新系统的逻辑模型。3.1 系统功能分析 成的主要功能有:管理各种歌曲,然后分别按歌曲拼音点播,按歌曲字数点播,按歌星, 调整音箱效果:音量/原唱/伴奏/静音等;点播曲目管理:删除误选的歌曲/选中的曲目优先被点唱。拼音点播:选择按歌曲拼音点播后列出所有的歌曲,然后利用歌曲拼音查询选的歌曲。字数点播:选择按歌曲字数点播后,显示的一个字歌曲,二个字歌曲等,再选择其中的一项,然后在按歌曲拼音查询想要点的歌曲。歌星点播:选择按歌星点播后,显示的是数据库所有歌星的名字。再选择其中的一项,然后利用歌星姓名的拼音查询歌曲。语种点播:选择歌曲语种点播后,显示的是不同语言的歌曲,分别是国语,粤语,英语,再选择其中的一项,然后利用歌曲拼音查询选的歌曲。调整音箱效果:音量/原唱/伴奏/静音等。暂停,倒退,快进等,就像按动播放器面版上的按钮一样。每一个设备的特殊命令依赖于设备本身的功能,例如可以让波形音频设备录音等。实际上MCI是一个高级的函数调用接口,可以把它看作一个解释器,通过它,就可以直接和外部音频或视频设备打交道了。点播曲目管理:删除误选的歌曲/选中的曲目优先被点唱。3.2 系统数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。同时,合理的数据库结构也将有利于程序的实现。开发本系统设计了一个表如下所示: 歌曲表的定义 表3.1 歌曲表列名数据类型长 度允许空songnameVarchar50singernameVarchar50songnumint20lanuageInteger20pinyinVarchar20注:本表的主要作用是用于装载本系统所有歌曲的基本信息,通过这张表我们可以大致上了解歌曲的属性,如歌曲名,歌曲拼音,演唱者,字数,语种歌曲路径,可以供用户查找时能获得正确的信息。 中北大学2014届毕业设计说明书4系统行为特性设计4.1 软件结构设计按照整体的功能设计,该系统包括点播模块和播放控制模块。自动点播系统拼音点歌歌星点歌字数点歌语种点歌更新乐库4.1.1 自动点播系统点播模块设计 图4.1 点播模块图功能描述:进入自动点播系统后,显示的是各种点播模式:有拼音点播,字数点播,歌星点播,语种点播,每个点播模块都可以查询想要点的歌曲。(1) 拼音点播子模块功能描述: 进入拼音点播模块后,选择字母点击,系统会根据所选字母检索歌曲,选择歌曲后双击选择。(2) 字数点播子模块字 数 点 歌一字歌二字歌三字歌四字歌五字歌六字歌八字歌九字歌七字歌 图4.2 字数点播模块图 功能描述: 进入字数点播模块后,根据不同字数选择歌曲,选中歌曲双击选择。(3) 歌星点播子模块功能描述: 进入歌星点播模块后,根据不同歌星选择歌曲,选中歌曲双击选择。(4) 语种点播子模块语种点播粤语点歌国语点歌英语点歌 图4.3 语种点播模块图功能描述: 进入语种点播模块后,根据不同语种选择歌曲,选中歌曲双击选择。(5) 更新歌库模块更新歌库保存修改撤销修改删除选中添加 图 4.4 更新歌库模块图功能描述:进入更新歌库模块后,可以选择添加功能添加歌曲;删除选中歌曲删除歌曲;修改完成以后点击保存修改,歌曲更新成功;点击撤销修改,之前的操作作废。4.1.2 播放控制模块(1) 播放列表管理功能描述:进入已选列表,可以对误选的歌曲进行删除。(2)播放控制模块功能描述:对系统歌曲控制功能有快进、快退、播放/暂停、下一首、重播、原唱/伴奏、静音开/关、音量控制。播放控制模块快退快进暂停/播放音量控制静音开/关原唱/伴奏下一首重播 图4.5 播放控制模块图4.2 功能子模块设计对上述各项功能进行集中,分块,按照结构化程序设计的要求,分为拼音点播,歌曲字数点播,歌星点播,语种点播和播放控制歌曲功能模块,得到系统子模块图如下:4.2.1 拼音点播子模块(1) 界面设计:该模块主要实现按照歌曲的拼音进行查找歌曲,所以我添加了二十六个字母控件,是用来利用歌曲的拼音查询想要点的歌曲。(2) 拼音点播子模块功能描述:选中按拼音点播后,列出所有的歌曲,然后在歌曲的拼音查找想要点的歌曲。流程图如下所示,其它的点播模块也类似。 图4.6 点播模块流程图4.2.2 字数点播子模块 (1) 界面设计:该界面可以按照一字歌,二字歌,三字歌,四字歌,五字歌,六字歌,七字歌,八字歌和九字歌。(2) 字数点播子模块功能描述一字歌:点中后显示出所有一个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。二字歌:点中后显示出所有二个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。三字歌:点中后显示出所有三个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。四字歌:点中后显示出所有四个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。五字歌:点中后显示出所有五个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。六字歌:点中后显示出所有六个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。七字歌:点中后显示出所有七个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。八字歌:点中后显示出所有八个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。九字歌:点中后显示出所有九个字的歌曲,然后在按歌曲拼音查找想要点的歌曲。4.2.3 歌星点播子模块(1) 界面设计:该界面可以看到所有的歌星,选择自己喜欢的歌星,双击进入该歌星所有曲目表,双击选择。显示界面如图4.11。图4.8 显示歌星点播界面图4.2.4 语种点播子模块(1) 界面设计:该界面可以按照汉语,英语,日语,韩语,粤语,台语六种查询歌曲模式。(2) 歌星点播子模块功能描述国语:点中后显示所有国语歌曲,然后在双击选择想要点的歌曲。英语:点中后显示所有英语歌曲,然后在双击选择想要点的歌曲。粤语:点中后显示所有粤语歌曲,然后在双击选择想要点的歌曲。 图4.9 语种点播界面4.2.5 播放控制子模块(1) 界面设计:该界面包括快进、快退、播放/暂停、下一首、重播、原唱/伴奏、静音开/关、音量控制。(2) 播放控制子模块功能描述下一曲:这个按钮控件的功能是播放列表框中当前播放歌曲的下一首曲目,如果播放的歌曲是最后一首歌曲则播放的还是最后一首歌曲。算法实现如图4.13。图4.10 播放下一曲功能算法流程图音量控制:在唱歌的时候,可以调节音箱和话筒音量的大小。MIXER11类封装了与混音器操作相关的几个设备标识数据,包括设备标识号 m_uMxId,设备句柄m_hmx和相应设备操作消息的窗口句柄m_hWnd。GetControlDetails 12和 SetControlDetails 13用于获取和设置制定的控制的详细参数值。GetVolume 和 SetVolume 用于获取和设置进行播放音频时指定的混音器控制的音量。这两个函数先调用GetLineInfo和 GetLineControl函数来确定所对应的线路的控制,然后调用GetControlDetails 和 SetControlDetails 来设置音量值。4.3 代码实现#include widget.h#include ui_widget.h#include QDebug#include #include#include #include#include#include#includeWidget:Widget(QWidget *parent) : QWidget(parent), ui(new Ui:Widget) /this-player =new Phonon:VideoPlayer(Phonon:VideoCategory,this); / this-player-resize(400,300); ui-setupUi(this); this-setWindowTitle(tr(My KTV player); mplayerProcess = new QProcess(); connect(mplayerProcess,SIGNAL(readyReadStandardOutput(),this,SLOT(back_message_slots(); args -slave; args-quiet; soundson = true; musicon = true; pauseon= false;#ifdef Q_WS_WIN args -wid QString:number(reinterpret_cast(ui-vv-winId(); args -vo directx:noaccel;#else args -wid vv-winId();#endif ui-timeslider-setRange(0,100); connect(ui-timeslider, SIGNAL(sliderMoved(int), this, SLOT(timesliderChanged(int); connect(ui-volumeslider,SIGNAL(sliderMoved(int),this,SLOT(volumesliderChanged(int); connect(ui-listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked(QListWidgetItem*); connect(ui-listWidget_2,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked_2(QListWidgetItem*); connect(ui-listWidget_3,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked_3(QListWidgetItem*); connect(ui-listWidget_4,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked(QListWidgetItem*); connect(ui-listWidget_5,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked(QListWidgetItem*); connect(ui-listWidget_6,SIGNAL(itemDoubleClicked(QListWidgetItem*),this,SLOT(_itemDoubleClicked(QListWidgetItem*); poller = new QTimer(this); connect(poller, SIGNAL(timeout(), this, SLOT(updatetime(); poller-start(1000); /if(pauseon = false) /poller-start(1000); /elsepoller-stop(); /if(pauseon = true)poller-stop(); /*QDir * dir =new QDir(F:/my/myfile); lofn = dir-entryList(QDir:Files); foreach(QString filename,lofn) QListWidgetItem * item =new QListWidgetItem(ui-listWidget); item-setText(filename);*/ /*在歌库页面显示表*/ model = new QSqlTableModel(this); model -setTable(songs);/重新关联表 model -setEditStrategy(QSqlTableModel:OnManualSubmit); model -select();/这样才能再次显示整个表的内容 ui -tableView -setModel(model); /*显示歌星列表*/ int i = ui-listWidget_3-count(); for(int a=0;alistWidget_3-takeItem(0); QSqlQuery query; query.exec(QObject:tr(select distinct singername from songs); while (query.next() singernameslistWidget_3); item-setText(singername); singernames.clear(); /*隐藏几个lineEdit*/ /ui-posedit-hide(); /ui-lengthedit-hide(); ui-playingedit-hide(); /QIcon a; /a.addPixmap(QPixmap(:/pinyin/skin2/Pinyin/a.png); /ui-abutton-setIcon(QIcon(:/new/skin2/Pinyin/a.png); /ui-abutton-setStyleSheet(QPushButtonimage: url(:/pinyin/skin2/Pinyin/a.png); ); /*QPixmap pix(:/new/skin2/Common/Template1.png); QPainter painter(this); int w = width(); int h = height(); painter.drawPixmap(0,0,w,h,pix);*/Widget:Widget() delete ui;void Widget:paintEvent(QPaintEvent *)/背景图 QPixmap pix(:/new/skin2/Common/TPL.jpg); QPainter painter(this); int w = width(); int h = height(); painter.drawPixmap(0,0,w,h,pix);void Widget:back_message_slots() while(mplayerProcess-canReadLine() QString message(mplayerProcess-readLine(); QStringList message_list = message.split(=); if(message_list0 = ANS_TIME_POSITION) postime = message_list1.toDouble();/toInt(); QTime time = int_to_time( postime); /ui-posedit-setText(time.toString(hh:mm:ss); ui-timeslider-setValue(100 * postime/ lengthtime); else if(message_list0 = ANS_LENGTH) lengthtime = message_list1.toDouble();/toInt(); QTime time = int_to_time(lengthtime); /ui-lengthedit-setText(time.toString(hh:mm:ss); QTime Widget:int_to_time(int second)/修改时间显示格式 int sec = 0, min = 0, hour = 0; QTime time; if(second = 60 & second = 3600) sec = second % 60; min = (second / 60) % 60; hour = second / 3600; time.setHMS(hour,min,sec); return time;void Widget:updatetime() /读取播放时间和总时间 if(pauseon = false) mplayerProcess-write(get_time_lengthn); mplayerProcess-write(get_time_posn);void Widget:on_playbutton_clicked()/ 暂停播放 if(pauseon = true) mplayerProcess-write(pausen);pauseon=false; else mplayerProcess-write(pausen);pauseon=true;void Widget:on_singbutton_clicked()/ 原唱/伴奏 if(musicon=true) mplayerProcess-write(switch_audio 0n);musicon=false; elsemplayerProcess-write(switch_audio 1n);musicon=true;void Widget:on_stopbutton_clicked()/停止播放 mplayerProcess-write(stopn);void Widget:on_qbbutton_clicked() /快退 mplayerProcess-write(seek -2 0n);void Widget:on_qqbutton_clicked() /快进 mplayerProcess-write(seek +1 0n);void Widget:on_soundsonbutton_clicked()/静音开关 if(soundson = true) mplayerProcess-write(mute 1n);soundson=false; else mplayerProcess-write(mute 0n);soundson=true;/*void Widget:on_pushButton_3_clicked() /音量减 mplayerProcess-write(volume -1n);void Widget:on_pushButton_2_clicked() /音量加 mplayerProcess-write(volume +1n);*/void Widget:timesliderChanged(int aa) /播放进度条 mplayerProcess-write(QString(seek + QString:number(aa) + 1n).toUtf8();void Widget:volumesliderChanged(int aa) /音量条 mplayerProcess-write(QString(volume + QString:number(aa) + 1n).toUtf8();/void Widget:on_openfilebutton_clicked() /打开文件/ mplayerProcess-write(quitn);/ mplayerProcess = new QProcess();/ QString fileName = QFileDialog:getOpenFileName(this, tr(Open File),tr(Images (*.avi *.mkv *.mp3);/ qDebug()fileName;/ if(fileName !=)/ / args start(mplayerPath, args);/ args.removeLast();/ /void Widget:on_returnbutton_clicked()/返回播放界面 ui-stackedwidget-setCurrentWidget(ui-vv); /ui-posedit-show(); /ui-lengthedit-show(); ui-playingedit-show();/*void Widget:on_allbutton_clicked()/切换到全部列表 ui-stackedwidget-setCurrentWidget(ui-alllist);*/void Widget:on_chosenbutton_clicked()/切换到已选界面 ui-stackedwidget-setCurrentWidget(ui-chosenwidget); /ui-posedit-hide(); /ui-lengthedit-hide(); ui-playingedit-hide();/* void Widget:on_renewbutton_clicked()/刷新 / lofn=QFileDialog:getOpenFileNames(this,tr(选择视频文件),F:/my/myfile,tr(Images(*.mkv); QDir * dir =new QDir(F:/my/myfile); lofn = dir-entryList(QDir:Files);QDir *dir = new QDir(F:/my/myfile); QStringList list =dir-nameFilters(); foreach(QString filename,lofn) QListWidgetItem * item =new QListWidgetItem(ui-listWidget); item-setText(filename); */void Widget:_itemDoubleClicked ( QListWidgetItem * abc )/点歌界面双击选歌 QString str = abc-text(); QListWidgetItem * aaa =new QListWidgetItem(ui-listWidget_2) ; aaa-setText(str); QMessageBox:warning(this,tr(成功点歌),tr(%1已添加到播放列表).arg(str),QMessageBox:Ok);void Widget:_itemDoubleClicked_3 (QListWidgetItem * abc )/歌星点歌界面选择歌星 QString str = abc-text(); ui-stackedWidget2-setCurrentWidget(ui-singernamewidget2); int i = ui-listWidget_5-count(); for(int a=0;alistWidget_5-takeItem(0); QSqlQuery query; query.exec(QObject:tr(select songname from songs where singername = %1).arg(str); while (query.next() songsnamelistWidget_5); item-setText(songname); songsname.clear();void Widget:_itemDoubleClicked_2 ( QListWidgetItem *xxx )/已选列表中双击播放 mplayerProcess-write(quitn); mplayerProcess = new QProcess(this); connect(mplayerProcess,SIGNAL(readyReadStandardOutput(),this,SLOT(back_message_slots();#ifdef Q_WS_WIN QString fileName = F:/songs/+xxx-text()+.mkv;#else QString fileName = /home/sphinx/songs/ + xxx-text()+.mkv;#endif qDebug()playingedit-setText(tr(正在播放:)+xxx-text(); if(fileName !=) args play(Phonon:MediaSource(fileName); mplayerProcess-start(mplayerPath, args); qDebug()args=listWidget_2-takeItem(ui-listWidget_2-currentRow(); ui-stackedwidget-setCurrentWidget(ui-vv);/转到播放页面 /ui-posedit-show(); /ui-lengthedit-show(); ui-playingedit-show();void Widget:on_removepu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第5课 歌声嘹亮-子程序设计和机器人发音说课稿-2025-2026学年初中信息技术粤教清华版九年级下册-粤教清华版
- 3.2 土地资源说课稿-2024-2025学年人教版地理八年级上册
- 《教头风雪山神庙》《装在套子里的人》联读 教学设计 2023-2024学年统编版高中语文必修下册
- 2025年中考数学试题分类汇编:统计(9大考点57题) (第1期)原卷版
- 6摆的研究教学设计-2025-2026学年小学科学浙教版2017五年级下册-浙教版
- 9 我的老师教学设计-2025-2026学年小学美术广西版二年级上册-广西版
- 5.1 传感器的原理教学设计-2025-2026学年高中物理沪教版2019选择性必修第二册-沪教版2019
- 2025年行政能力测试题库及答案
- 4.2.2等差数列的前n项和公式(一)教学设计-2023-2024学年高二上学期数学人教A版(2019)选择性必修第二册
- 在北京的金山上(教学设计)-2023-2024学年花城版音乐三年级下册
- NB-T+10488-2021水电工程砂石加工系统设计规范
- (高清版)JTGT 3671-2021 公路交通安全设施施工技术规范
- DZ∕T 0214-2020 矿产地质勘查规范 铜、铅、锌、银、镍、钼(正式版)
- 2024年广东南海控股集团有限公司招聘笔试冲刺题(带答案解析)
- 智能制造基础与应用(第2版)教案 第二章 智能制造数字化基础 2.数字化设计与仿真
- 开学第一课假期收心主题班会 课件
- 中山酒店行业状况分析
- 液压车间生产管理制度
- 植保无人机应急处置预案
- 湖北十堰生产实习报告
- 营销体系之业绩如何做增量10大方法
评论
0/150
提交评论