Qt實現(xiàn)鬧鐘小程序
本文實例為大家分享了Qt之鬧鐘小程序的具體代碼,供大家參考,具體內(nèi)容如下
-首先
首先我們利用Qt的designer 設計好我們需要的鬧鐘界面,設計界面如下圖:

其次我們來分別利用信號分別完成他們各自的槽函數(shù)
在mainwindow.h中,我們定義了下面這些私有成員變量,如下:
/ mainwindow.h文件/**
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTimeEdit>
#include <QTimer>
#include <QLabel>
#include <QMediaPlayer>
#include <QLineEdit>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void TimerResponse();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_radioButton_clicked();
void on_radioButton_2_clicked();
void on_radioButton_3_clicked();
void on_pushButton_3_clicked();
private:
Ui::MainWindow *ui;
QTimeEdit *timeEdit;
QLabel *label_2;
QTime Temp;
QLineEdit *lineEdit;
QMediaPlayer *player = new QMediaPlayer;
QTimer *myTimer = new QTimer(this);
};
#endif // MAINWINDOW_H
這些私有變量就是上述界面的元素指針,其種 QMediaPlayer 這個類用于播放mp3 媒體文件,用之前得在 .pro 文件中添加如下代碼:
QT += multimedia
這樣才能引入這個庫,接下來,我們開始在.cpp中完成各個槽函數(shù)。這里我們 得不斷檢測鬧鐘定時時間是否到達預設時間,我們必須得間隔500ms檢測一次,因此我們引入了定時器,QTimer,開啟之后,進入循環(huán)檢測鬧鐘是否到點。
這里,我們選用復選框來設置鈴聲,當然也可以改為下拉菜單的方式。
/ mainwindow.cpp文件/**
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDateTime>
#include <QTime>
int tt = 0;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label_2->setVisible(false);
QObject::connect(myTimer, SIGNAL(timeout()),
this, SLOT(TimerResponse()) );
ui->pushButton->setDisabled(true); //進去后,失能開始 按鈕
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
myTimer->start(500); //star 按下,啟動定時器
Temp = ui->timeEdit->time(); //獲取時鐘編輯器的值 ,為后續(xù) 系統(tǒng)時間的比較做準備
}
void MainWindow::TimerResponse() //不斷檢查是否 定時時間到
{
if (Temp.hour() == QTime::currentTime().hour() &&
Temp.minute() == QTime::currentTime().minute() )
//開始響鈴
{
ui->label_2->setVisible(true);
player->play();
myTimer->setSingleShot(true); //每次到點只能響鈴一次
}
}
void MainWindow::on_pushButton_2_clicked()
{
tt++;
if(tt == 10) tt = 0;
else if(tt%2 == 1)
player->play();
else
player->stop();
}
void MainWindow::on_radioButton_clicked() //選中鈴聲1
{
ui->pushButton->setEnabled(true);
player->setVolume(30);
player->setMedia(QUrl::fromLocalFile("C:/Users/Zhangkai/Desktop/Qt_Example/demo7/邱永傳 - 傷心你的墮落.mp3"));
ui->lineEdit->setText("邱永傳 - 傷心你的墮落.mp3");
}
void MainWindow::on_radioButton_2_clicked() //選擇鈴聲2
{
ui->pushButton->setEnabled(true);
player->setVolume(30);
player->setMedia(QUrl::fromLocalFile("C:/Users/Zhangkai/Desktop/Qt_Example/demo7/邱永傳 - 十一年.mp3"));
ui->lineEdit->setText("邱永傳 - 十一年.mp3");
}
void MainWindow::on_radioButton_3_clicked() //選擇鈴聲3
{
ui->pushButton->setEnabled(true);
player->setVolume(30);
player->setMedia(QUrl::fromLocalFile("C:/Users/Zhangkai/Desktop/Qt_Example/demo7/邱永傳 - 十二年.mp3"));
ui->lineEdit->setText("邱永傳 - 十二年.mp3");
}
void MainWindow::on_pushButton_3_clicked()
{
myTimer->setSingleShot(false); // 重置后,有意可以為下次準備響鈴
ui->label_2->setVisible(false);
player->stop();
}
至此,小小的鬧鐘界面就完成了,很簡單。但是對于了解Qt信號槽機制,很有幫助。同時使用了一個新類 QMediaPlayer 類。
最后效果如下所示:


這里,只加入了三首歌,我們可以新增復選框嗎,然后在之后的復選框的槽函數(shù)中加入和上述復選框的槽函數(shù)類似的代碼,增加新的音樂。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++基于遞歸和非遞歸算法判定兩個二叉樹結(jié)構(gòu)是否完全相同(結(jié)構(gòu)和數(shù)據(jù)都相同)
這篇文章主要介紹了C++基于遞歸和非遞歸算法判定兩個二叉樹結(jié)構(gòu)是否完全相同,若判斷二叉樹的結(jié)構(gòu)和數(shù)據(jù)都相同則為完全相同.涉及C++二叉樹的創(chuàng)建、遍歷、比較等相關操作技巧,需要的朋友可以參考下2017-05-05
C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實現(xiàn)約瑟夫環(huán)
這篇文章主要介紹了C數(shù)據(jù)結(jié)構(gòu)循環(huán)鏈表實現(xiàn)約瑟夫環(huán)的相關資料,需要的朋友可以參考下2017-05-05
static_cast,dynamic_cast,reinterpret_cast,const_cast的區(qū)別及用法詳解
以下是對static_cast,dynamic_cast,reinterpret_cast,const_cast的區(qū)別及用法進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09

