版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.铃音定时播放系统程序功能程序的主要功能是定时播放音乐。为了符合学校的需求,本程序设定了方案为主的方式,进行配置。在一个方案可以随意建立256条以内的项目,每条项目有描述,时间,音乐地址三项描述,可以在24小时的时间内自动播放。本程序还内置了4种方案,进行修改后可以符合学校不同季节不同的作息时间安排。程序流程图1 保存当前方案2 保存内置的方案3 保存音乐播放数据1. 循环更新时间2. 按时间定时播放音乐3. 显示下一项目1. 添加项目2. 删除项目3. 按时间进行项目排序程序代码MusicF.pro#-# Project created by QtCreator 2015-08-07T08:
2、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 &
3、quot;mainwindow.h"#include <QApplication>#include <QSplashScreen>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
4、("铃音"); w.setWindowIcon(QIcon("wind.png"); w.show(); splash.finish(&w); return a.exec();mainwindow.h/主要功能:/主窗口类的声明/#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QLabel>#include <QPushButton>#include <QTableView>#include <QC
5、omboBox>#include <QVBoxLayout>#include <QMediaPlayer>#include <QSlider>#include "modelmusic.h"class MainWindow : public QMainWindow Q_OBJECTpublic: MainWindow(QWidget *parent = 0); MainWindow(); void createFrame(); void creatNext(); ModelMusic model;public slots: void
6、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; QPush
7、Button *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/
8、主要功能:/主窗口类的具体函数实现/#include "mainwindow.h"#include "adddlg.h"#include "datadelegate.h"#include <QHBoxLayout>#include <QGridLayout>#include <QString>#include <QStringList>#include <QFile>#include <QTimer>#include <QDataStream>#inc
9、lude <QPixmap>#include <windows.h>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; foote
10、rLabel->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 o
11、ne; QString two; QString three; in>>size; model.nowData.clear(); for(int i=0; i<size; i+) in>>three>>two>>one; musicData tmp; tmp.description = three; tmp.time = two; tmp.destination = one; model.nowData.append(tmp); file.close(); model.refresh(); doit = false; footerLabel
12、->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(
13、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(bo
14、ol), 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&qu
15、ot;); file.open(QIODevice:WriteOnly | QIODevice:Truncate); QDataStream out(&file); out<<model.nowData.size(); for(int i = 0; i<model.nowData.size(); i+) out<<model.nowDatai.description; out<<model.nowDatai.time; out<<model.nowDatai.destination; file.close();void MainWi
16、ndow:createFrame() QPixmap map; map.load("addbtn.png"); addBtn = new QPushButton; addBtn->clearMask(); addBtn->setFixedSize(map.width(), map.height(); /addBtn->setMask(map.createHeuristicMask(); addBtn->setIcon(map); addBtn->setIconSize(QSize(map.width(), map.height(); addBt
17、n->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();
18、 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(), m
19、ap.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.wid
20、th(), 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->setIconSiz
21、e(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 = n
22、ew 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,
23、 &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(&quo
24、t;音量:"); 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
25、->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
26、, 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(optionLay
27、out);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.nowDat
28、a.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 < i; j+) QStringList pieces1 = model.nowDataj.time.split(":", QString:SkipEmptyParts); QStringList
29、 pieces2 = model.nowDataj+1.time.split(":", QString:SkipEmptyParts); QString one = pieces1.join(""); QString two = pieces2.join(""); if(one.toInt() > two.toInt() musicData tmp; tmp.description = model.nowDataj.description; tmp.destination = model.nowDataj.destination
30、; 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.n
31、owDataj+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; c
32、ase 3: file.setFileName("data3.dat"); break; default: break; file.open(QIODevice:WriteOnly | QIODevice:Truncate); QDataStream out(&file); out<<model.nowData.size(); for(int i = 0; i<model.nowData.size(); i+) out<<model.nowDatai.description; out<<model.nowDatai.time
33、; out<<model.nowDatai.destination; file.close();void MainWindow:read() 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; ca
34、se 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; in>>size; model.nowData.clear(); for(int i=0; i<size; i+) in>>three>>two>>one; musi
35、cData 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; Q
36、StringList 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")
37、.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
38、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("&qu
39、ot;); if(nextNumber = model.nowData.size()-1) nextNumber = 0; return; else nextNumber +; while(nowt.toInt() > tryit.toInt() ); nextNumber -; for(int i=nextNumber; i<model.nowData.size(); i+) QString one; QString two; QStringList oneL; QStringList twoL; one = model.nowDatanextNumber.time; two =
40、 model.nowDatai.time; oneL = one.split(":", QString:SkipEmptyParts); twoL = two.split(":", QString:SkipEmptyParts); one = oneL.join(""); two = twoL.join(""); if(two.toInt() >= nowt.toInt() if(one.toInt() > two.toInt() nextNumber = i; void MainWindow:doit
41、BtnFunction() 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/主要功能:/新建项目类的对话框的声明/#ifn
42、def ADDDLG_H#define ADDDLG_H#include <mainwindow.h>#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QTimeEdit>#include <QPushButton>#include <QGridLayout>#include <QMediaPlayer>class addDlg : public QDialog Q_OBJECTpublic: addDlg(ModelM
43、usic *, 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();pr
44、ivate: ModelMusic *musicm; QLabel *title; QLabel *descriptionLabel; QLineEdit *descriptionLineEdit; QLabel *timeLabel; QTimeEdit *timeEdit; QLabel *destinationLabel; QLineEdit *destinationLineEdit; QPushButton *destinationBtn; QPushButton *tryMusicBtn; QPushButton *OkBtn; QPushButton *CleBtn; QMedia
45、Player *player; QGridLayout *mainLayout;#endif / ADDDLG_Hadddlg.cpp/主要功能:/ 新建项目类的对话框的全部实现/#include "adddlg.h"#include "modelmusic.h"#include <QString>#include <QFileDialog>#include <QFont>addDlg:addDlg(ModelMusic *muc, QWidget *parent) :QDialog(parent) musicm =
46、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; tim
47、eLabel->setText(tr("时间(请输入播放的时间)"); timeEdit = new QTimeEdit; destinationLabel = new QLabel; destinationLabel->setText(tr("地址(请输入播放音乐的地址)"); destinationLineEdit = new QLineEdit; destinationBtn = new QPushButton; destinationBtn->setText(tr("."); player = new QMe
48、diaPlayer(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->se
49、tMargin(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->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年宝宝撕蛋壳说课稿
- 桑树栽培工创新意识竞赛考核试卷含答案
- 2025-2026学年大班画地球说课稿
- 天然气加压输送工风险识别水平考核试卷含答案
- 铸件清理工改进考核试卷含答案
- 2025-2026学年大班游戏干预说课稿
- 电解电容器装配工岗前安全生产基础知识考核试卷含答案
- 工业固体废物处理处置工常识考核试卷含答案
- 腐蚀控制工岗前安全演练考核试卷含答案
- 呼叫中心服务员基础技能能力考核试卷含答案
- 2026年全国法律硕士(法学)联考真题及答案
- 招聘84人!2026年青海省检察机关面向社会公开招聘聘用制书记员考试备考试题及答案解析
- 2026年湖南水利水电职业技术学院单招职业技能考试题库附答案
- 2026-2027学年浙教版数学九上 第3章 圆的基本性质 单元综合知识梳理卷
- 新教科版三上科学学科教学计划-2026秋
- 重症营养支持中国指南(2026版)
- 2026年三力测试考试题库及答案
- 中考英语-阅读理解之推断题专题讲义
- 公路水运试验检测师《水运结构与地基》考试真题(2026年新版)
- 2025年高级育婴师实操考试试题及答案
- 课本剧社团教学课件
评论
0/150
提交评论