




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
铃音定时播放系统程序功能程序的主要功能是定时播放音乐。为了符合学校的需求,本程序设定了方案为主的方式,进行配置。在一个方案可以随意建立256条以内的项目,每条项目有描述,时间,音乐地址三项描述,可以在24小时的时间内自动播放。本程序还内置了4种方案,进行修改后可以符合学校不同季节不同的作息时间安排。程序流程图1 保存当前方案2 保存内置的方案3 保存音乐播放数据1. 循环更新时间2. 按时间定时播放音乐3. 显示下一项目1. 添加项目2. 删除项目3. 按时间进行项目排序程序代码MusicF.pro#-# Project created by QtCreator 2015-08-07T08:13:53#-QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgets QT += multimediawidgetsTARGET = MusicFTEMPLATE = appSOURCES += main.cpp mainwindow.cpp modelmusic.cpp adddlg.cpp datadelegate.cppHEADERS += mainwindow.h modelmusic.h adddlg.h datadelegate.hmain.cpp/主要功能:/显示程序打开前的画面/创建主窗口/#include mainwindow.h#include #include int main(int argc, char *argv) QApplication a(argc, argv); QPixmap pixmap(first.png); QSplashScreen splash(pixmap); splash.show(); cessEvents(); MainWindow w; w.resize(QSize(840, 580); w.setWindowTitle(铃音); w.setWindowIcon(QIcon(wind.png); w.show(); splash.finish(&w); return a.exec();mainwindow.h/主要功能:/主窗口类的声明/#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include #include #include #include #include #include #include #include modelmusic.hclass MainWindow : public QMainWindow Q_OBJECTpublic: MainWindow(QWidget *parent = 0); MainWindow(); void createFrame(); void creatNext(); ModelMusic model;public slots: void addBtnFunction(); void delBtnFunction(); void sortBtnFunction(); void writeBtnFunction(); void doitBtnFunction(); void read(); void showtime(); void setVolume();private: QFrame *mainFrame; QLabel *headerLabel; QLabel *footerLabel; QPushButton *addBtn; QPushButton *delBtn; QPushButton *sortBtn; QPushButton *writeBtn; QPushButton *doitBtn; QTableView *tableView; QMediaPlayer *player; qint32 nextNumber; bool doit; QLabel *timeLabel; QLabel *timeNow; QTimer *timer; QLabel *optionLabel; QComboBox *optionComboBox; QLabel *nextLabel; QLabel *volum; QSlider *slider;#endif / MAINWINDOW_Hmainwindow.cpp/主要功能:/主窗口类的具体函数实现/#include mainwindow.h#include adddlg.h#include datadelegate.h#include #include #include #include #include #include #include #include #include MainWindow:MainWindow(QWidget *parent) : QMainWindow(parent) mainFrame = new QFrame; createFrame(); headerLabel = new QLabel; QPixmap mapheader; mapheader.load(header.png); headerLabel-setPixmap(mapheader); footerLabel = new QLabel; footerLabel-setText(tr(footer); QTime time = QTime:currentTime(); QString str = time.toString(hh:mm); timeNow-setText(str); player = new QMediaPlayer(this); QFile file(datanow.dat); if(file.open(QIODevice:ReadOnly) QDataStream in(&file); int size; QString one; QString two; QString three; insize; model.nowData.clear(); for(int i=0; ithreetwoone; musicData tmp; tmp.description = three; tmp.time = two; tmp.destination = one; model.nowData.append(tmp); file.close(); model.refresh(); doit = false; footerLabel-setText(tr(编辑中); QWidget *widget = new QWidget; QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout-addWidget(headerLabel); mainLayout-addWidget(mainFrame); mainLayout-addWidget(footerLabel); widget-setLayout(mainLayout); this-setCentralWidget(widget); connect(addBtn, SIGNAL(clicked(bool), this, SLOT(addBtnFunction(); connect(delBtn, SIGNAL(clicked(bool), this, SLOT(delBtnFunction(); connect(sortBtn, SIGNAL(clicked(bool), this, SLOT(sortBtnFunction(); connect(writeBtn, SIGNAL(clicked(bool), this, SLOT(writeBtnFunction(); connect(doitBtn, SIGNAL(clicked(bool), this, SLOT(doitBtnFunction(); connect(optionComboBox, SIGNAL(currentIndexChanged(int), this, SLOT(read(); connect(timer, SIGNAL(timeout(), this, SLOT(showtime(); connect(slider, SIGNAL(valueChanged(int), this, SLOT(setVolume(); Sleep(1000);MainWindow:MainWindow() QFile file(datanow.dat); file.open(QIODevice:WriteOnly | QIODevice:Truncate); QDataStream out(&file); outmodel.nowData.size(); for(int i = 0; imodel.nowData.size(); i+) outmodel.nowDatai.description; outmodel.nowDatai.time; outclearMask(); addBtn-setFixedSize(map.width(), map.height(); /addBtn-setMask(map.createHeuristicMask(); addBtn-setIcon(map); addBtn-setIconSize(QSize(map.width(), map.height(); addBtn-setToolTip(添加一项项目); map.load(delbtn.png); delBtn = new QPushButton; delBtn-clearMask(); delBtn-setFixedSize(map.width(), map.height(); /addBtn-setMask(map.createHeuristicMask(); delBtn-setIcon(map); delBtn-setIconSize(QSize(map.width(), map.height(); delBtn-setToolTip(删除一项项目); map.load(sortbtn.png); sortBtn = new QPushButton; sortBtn-clearMask(); sortBtn-setFixedSize(map.width(), map.height(); /addBtn-setMask(map.createHeuristicMask(); sortBtn-setIcon(map); sortBtn-setIconSize(QSize(map.width(), map.height(); sortBtn-setToolTip(排序); map.load(okbtn.png); doitBtn = new QPushButton; doitBtn-clearMask(); doitBtn-setFixedSize(map.width(), map.height(); /addBtn-setMask(map.createHeuristicMask(); doitBtn-setIcon(map); doitBtn-setIconSize(QSize(map.width(), map.height(); doitBtn-setToolTip(执行); map.load(writebtn.png); writeBtn = new QPushButton; writeBtn-clearMask(); writeBtn-setFixedSize(map.width(), map.height(); /addBtn-setMask(map.createHeuristicMask(); writeBtn-setIcon(map); writeBtn-setIconSize(QSize(map.width(), map.height(); writeBtn-setToolTip(保存); QVBoxLayout *btnLayout = new QVBoxLayout; btnLayout-addWidget(addBtn); btnLayout-addWidget(delBtn); btnLayout-addWidget(sortBtn); btnLayout-addWidget(writeBtn); btnLayout-addWidget(doitBtn); tableView = new QTableView; tableView-setModel(&model); tableView-setSelectionBehavior(QAbstractItemView:SelectRows); tableView-setColumnWidth(2, 350); tableView-setColumnWidth(0, 250); tableView-setColumnWidth(1, 50); /DataDelegate dataDelegate; /tableView-setItemDelegateForColumn(1, &dataDelegate); optionLabel = new QLabel; optionLabel-setText(tr(方案:); timeNow = new QLabel; timeLabel = new QLabel; timeLabel-setText(tr(当前系统时间:); nextLabel = new QLabel; timer = new QTimer(this); timer-start(1000); volum = new QLabel; volum-setText(音量:); slider = new QSlider(Qt:Horizontal); slider-setMinimum(0); slider-setMaximum(100); slider-setMaximumWidth(100); slider-setValue(100); optionComboBox = new QComboBox; optionComboBox-addItem(方案一); optionComboBox-addItem(方案二); optionComboBox-addItem(方案三); optionComboBox-addItem(方案四); QGridLayout *optionLayout = new QGridLayout; optionLayout-addWidget(timeLabel, 0, 0); optionLayout-addWidget(timeNow, 1, 0); optionLayout-addWidget(optionLabel, 2, 0); optionLayout-addWidget(optionComboBox, 3, 0); optionLayout-addWidget(nextLabel, 4, 0); optionLayout-addWidget(volum, 5, 0); optionLayout-addWidget(slider, 6, 0); QHBoxLayout *frameLayout = new QHBoxLayout(mainFrame); frameLayout-addLayout(btnLayout); frameLayout-addWidget(tableView); frameLayout-addLayout(optionLayout);void MainWindow:addBtnFunction() doit = false; footerLabel-setText(tr(编辑中); addDlg *dlg = new addDlg(&model); dlg-show();void MainWindow:delBtnFunction() doit = false; footerLabel-setText(tr(编辑中); int row = tableView-currentIndex().row(); model.nowData.removeAt(row); model.refresh();void MainWindow:sortBtnFunction() doit = false; footerLabel-setText(tr(编辑中); for(int i=model.nowData.size()-1; i 0; i-) for(int j=0; j two.toInt() musicData tmp; tmp.description = model.nowDataj.description; tmp.destination = model.nowDataj.destination; tmp.time = model.nowDataj.time; model.nowDataj.description = model.nowDataj+1.description; model.nowDataj.destination = model.nowDataj+1.destination; model.nowDataj.time = model.nowDataj+1.time; model.nowDataj+1.description = tmp.description; model.nowDataj+1.destination = tmp.destination; model.nowDataj+1.time = tmp.time; model.refresh();void MainWindow:writeBtnFunction() QFile file; switch(optionComboBox-currentIndex() case 0: file.setFileName(data0.dat); break; case 1: file.setFileName(data1.dat); break; case 2: file.setFileName(data2.dat); break; case 3: file.setFileName(data3.dat); break; default: break; file.open(QIODevice:WriteOnly | QIODevice:Truncate); QDataStream out(&file); outmodel.nowData.size(); for(int i = 0; imodel.nowData.size(); i+) outmodel.nowDatai.description; outmodel.nowDatai.time; outcurrentIndex() case 0: file.setFileName(data0.dat); break; case 1: file.setFileName(data1.dat); break; case 2: file.setFileName(data2.dat); break; case 3: file.setFileName(data3.dat); break; default: break; if(!file.open(QIODevice:ReadOnly) return; QDataStream in(&file); int size; QString one; QString two; QString three; insize; model.nowData.clear(); for(int i=0; ithreetwoone; musicData tmp; tmp.description = three; tmp.time = two; tmp.destination = one; model.nowData.append(tmp); file.close(); model.refresh();void MainWindow:showtime() QTime time = QTime:currentTime(); QString text = time.toString(hh:mm); timeNow-setText(text); if(doit) QStringList oneList; QStringList twoList; QString two; oneList = text.split(:, QString:SkipEmptyParts); twoList = model.nowDatanextNumber.time.split(:, QString:SkipEmptyParts); text = oneList.join(); two = twoList.join(); nextLabel-setText(QString(下一计划:序号%1).arg(nextNumber+1); if(text.toInt() = two.toInt() player-setMedia(QUrl:fromLocalFile(model.nowDatanextNumber.destination); player-setVolume(100); player-play(); if(nextNumber = model.nowData.size()-1) nextNumber = 0; else nextNumber +; void MainWindow:creatNext() nextNumber = 0; QString tryit; QStringList tryitList; QStringList now; QString nowt; now = timeNow-text().split(:, QString:SkipEmptyParts); nowt = now.join(); do tryit = model.nowDatanextNumber.time; tryitList = tryit.split(:, QString:SkipEmptyParts); tryit = tryitList.join(); if(nextNumber = model.nowData.size()-1) nextNumber = 0; return; else nextNumber +; while(nowt.toInt() tryit.toInt() ); nextNumber -; for(int i=nextNumber; i= nowt.toInt() if(one.toInt() two.toInt() nextNumber = i; void MainWindow:doitBtnFunction() if(!doit) sortBtnFunction(); doit = true; footerLabel-setText(tr(执行中); creatNext(); else doit = false; footerLabel-setText(tr(编辑中); void MainWindow:setVolume() int volume = slider-value(); player-setVolume(volume);adddlg.h/主要功能:/新建项目类的对话框的声明/#ifndef ADDDLG_H#define ADDDLG_H#include #include #include #include #include #include #include #include class addDlg : public QDialog Q_OBJECTpublic: addDlg(ModelMusic *, QWidget *parent = 0); /void readDescription(); /void readTime(); /void readDestination(); void writeDescription(QString); void writeTime(QTime); void writeDestination(QString); friend class MainWindow;public slots: void openFile(); void okFuncion(); void cancelFunction(); void playMusic();private: ModelMusic *musicm; QLabel *title; QLabel *descriptionLabel; QLineEdit *descriptionLineEdit; QLabel *timeLabel; QTimeEdit *timeEdit; QLabel *destinationLabel; QLineEdit *destinationLineEdit; QPushButton *destinationBtn; QPushButton *tryMusicBtn; QPushButton *OkBtn; QPushButton *CleBtn; QMediaPlayer *player; QGridLayout *mainLayout;#endif / ADDDLG_Hadddlg.cpp/主要功能:/ 新建项目类的对话框的全部实现/#include adddlg.h#include modelmusic.h#include #include #include addDlg:addDlg(ModelMusic *muc, QWidget *parent) :QDialog(parent) musicm = muc; title = new QLabel; title-setText(tr(项目); QFont font; font.setPointSize(18); font.setBold(true); title-setFont(font); descriptionLabel = new QLabel; descriptionLabel-setText(tr(描述(请输入对于此项目的描述)); descriptionLineEdit = new QLineEdit; timeLabel = new QLabel; timeLabel-setText(tr(时间(请输入播放的时间)); timeEdit = new QTimeEdit; destinationLabel = new QLabel; destinationLabel-setText(tr(地址(请输入播放音乐的地址)); destinationLineEdit = new QLineEdit; destinationBtn = new QPushButton; destinationBtn-setText(tr(.); player = new QMediaPlayer(this); player-setVolume(100); tryMusicBtn = new QPushButton; tryMusicBtn-setText(tr(试听); OkBtn = new QPushButton; OkBtn-setText(tr(确定); CleBtn = new QPushButton; CleBtn-setText(tr(取消); mainLayout = new QGridLayout(this); mainLayout-setMargin(10); mainLayout-setSpacing(15); mainLayout-addWidget(title, 0, 0, 1, 2); mainLayout-addWidget(descriptionLabel, 1, 0, 1, 2); mainLayout-addWidget(descriptionLineEdit, 2, 0, 1, 2); mainLayout-addWidget(timeLabel, 3, 0, 1, 2); mainLayout-addWidget(timeEdit, 4, 0, 1, 2); mainLayout-addWidget(destinationLabel, 5, 0, 1, 2); mainLayout-addWidget(destinationLineEdit, 6, 0); mainLayout-addWidget(destinati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年科技咨询行业科技咨询服务市场前景研究报告
- 2025年花卉行业花卉养护技术应用前景报告
- 2025年智能农业行业技术创新与市场前景研究报告
- 2025年生物科技行业生物医药领域新药研发前景预测报告
- 2025年人脸识别行业人脸识别技术应用前景研究报告
- 山西省2025山西吕梁离石区博士研究生引进(第二批)笔试历年参考题库附带答案详解
- 宿迁市2025江苏宿迁市市场监督管理局局属事业单位招聘工作人员3人笔试历年参考题库附带答案详解
- 孝义市2025山西吕梁市孝义市招聘文旅专业人才笔试历年参考题库附带答案详解
- 垫江县2025第二季度重庆市垫江县事业单位招聘63人笔试历年参考题库附带答案详解
- 国家事业单位招聘2025中国科学技术交流中心招聘应届毕业生笔试及考试安排笔试历年参考题库附带答案详解
- 宣传物料技术服务方案设计
- 品管圈PDCA改善案例-产科联合多部门降低阴道分娩产后出血发生率
- 暴聋(突发性耳聋)中医临床路径及入院标准2020版
- 部编高教版2023·职业模块 中职语文 2.《宁夏闽宁镇:昔日干沙滩今日金沙滩》 课件
- 矿井火灾防治理论与技术课件
- 【MOOC】生命的教育-浙江大学 中国大学慕课MOOC答案
- 食品检测实验室操作规程
- 高血压个案护理案例
- 四川省三级综合医院评审标准实施细则(2023年版)
- 心肺复苏术课件2024新版
- Unit 1 Lesson1 Hello!教学设计 2024-2025学年冀教版英语七年级上册
评论
0/150
提交评论