Qt實(shí)現(xiàn)鬧鐘小程序
本文實(shí)例為大家分享了Qt之鬧鐘小程序的具體代碼,供大家參考,具體內(nèi)容如下
-首先
首先我們利用Qt的designer 設(shè)計(jì)好我們需要的鬧鐘界面,設(shè)計(jì)界面如下圖:
其次我們來分別利用信號(hào)分別完成他們各自的槽函數(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 這個(gè)類用于播放mp3 媒體文件,用之前得在 .pro 文件中添加如下代碼:
QT += multimedia
這樣才能引入這個(gè)庫,接下來,我們開始在.cpp中完成各個(gè)槽函數(shù)。這里我們 得不斷檢測(cè)鬧鐘定時(shí)時(shí)間是否到達(dá)預(yù)設(shè)時(shí)間,我們必須得間隔500ms檢測(cè)一次,因此我們引入了定時(shí)器,QTimer,開啟之后,進(jìn)入循環(huán)檢測(cè)鬧鐘是否到點(diǎn)。
這里,我們選用復(fù)選框來設(shè)置鈴聲,當(dāng)然也可以改為下拉菜單的方式。
/ 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);  //進(jìn)去后,失能開始 按鈕
}
MainWindow::~MainWindow()
{
  delete ui;
}
void MainWindow::on_pushButton_clicked()
{
  myTimer->start(500);      //star 按下,啟動(dòng)定時(shí)器
  Temp = ui->timeEdit->time();  //獲取時(shí)鐘編輯器的值 ,為后續(xù) 系統(tǒng)時(shí)間的比較做準(zhǔn)備
}
void MainWindow::TimerResponse() //不斷檢查是否 定時(shí)時(shí)間到
{
  if (Temp.hour() == QTime::currentTime().hour() &&
          Temp.minute() == QTime::currentTime().minute() )
    //開始響鈴
  {
    ui->label_2->setVisible(true);
    player->play();
    myTimer->setSingleShot(true); //每次到點(diǎn)只能響鈴一次
  }
}
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); // 重置后,有意可以為下次準(zhǔn)備響鈴
  ui->label_2->setVisible(false);
  player->stop();
}
至此,小小的鬧鐘界面就完成了,很簡(jiǎn)單。但是對(duì)于了解Qt信號(hào)槽機(jī)制,很有幫助。同時(shí)使用了一個(gè)新類 QMediaPlayer 類。
最后效果如下所示:
這里,只加入了三首歌,我們可以新增復(fù)選框嗎,然后在之后的復(fù)選框的槽函數(shù)中加入和上述復(fù)選框的槽函數(shù)類似的代碼,增加新的音樂。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
欄 目:C語言
下一篇:Qt股票組件之自選股列表拖拽、右鍵常用菜單功能的實(shí)現(xiàn)
本文標(biāo)題:Qt實(shí)現(xiàn)鬧鐘小程序
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/232.html
您可能感興趣的文章
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-用棧實(shí)現(xiàn)表達(dá)式求值的方法詳解
 - 01-10使用OpenGL實(shí)現(xiàn)3D立體顯示的程序代碼
 - 01-10求斐波那契(Fibonacci)數(shù)列通項(xiàng)的七種實(shí)現(xiàn)方法
 - 01-10C語言 解決不用+、-、&#215;、&#247;數(shù)字運(yùn)算符做加法
 - 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
 - 01-10用C++實(shí)現(xiàn)DBSCAN聚類算法
 - 01-10深入全排列算法及其實(shí)現(xiàn)方法
 - 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
 - 01-10用C語言實(shí)現(xiàn)單鏈表的各種操作(一)
 - 01-10用C語言實(shí)現(xiàn)單鏈表的各種操作(二)
 


閱讀排行
- 1C語言 while語句的用法詳解
 - 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
 - 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
 - 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
 - 5c語言計(jì)算三角形面積代碼
 - 6什么是 WSH(腳本宿主)的詳細(xì)解釋
 - 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
 - 8正則表達(dá)式匹配各種特殊字符
 - 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
 - 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
 
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
 - 04-02c語言用函數(shù)寫分段 用c語言表示分段
 - 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
 - 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
 - 04-02c語言沒有round函數(shù) round c語言
 - 04-02c語言分段函數(shù)怎么求 用c語言求分段
 - 04-02C語言中怎么打出三角函數(shù) c語言中怎
 - 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
 
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
 - 01-10C#中split用法實(shí)例總結(jié)
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
 - 04-02jquery與jsp,用jquery
 - 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
 - 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
 - 01-11ajax實(shí)現(xiàn)頁面的局部加載
 


