本文實例為大家分享了Qt之鬧鐘小程序的具體代碼,供大家參考,具體內容如下
-首先
首先我們利用Qt的designer 設計好我們需要的鬧鐘界面,設計界面如下圖:
其次我們來分別利用信號分別完成他們各自的槽函數
在mainwindow.h中,我們定義了下面這些私有成員變量,如下:
/ mainwindow.h文件/**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#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 文件中添加如下代碼:
1
|
QT += multimedia |
這樣才能引入這個庫,接下來,我們開始在.cpp中完成各個槽函數。這里我們 得不斷檢測鬧鐘定時時間是否到達預設時間,我們必須得間隔500ms檢測一次,因此我們引入了定時器,QTimer,開啟之后,進入循環檢測鬧鐘是否到點。
這里,我們選用復選框來設置鈴聲,當然也可以改為下拉菜單的方式。
/ mainwindow.cpp文件/**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#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 (); //獲取時鐘編輯器的值 ,為后續 系統時間的比較做準備 } 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 類。
最后效果如下所示:
這里,只加入了三首歌,我們可以新增復選框嗎,然后在之后的復選框的槽函數中加入和上述復選框的槽函數類似的代碼,增加新的音樂。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/weixin_44403952/article/details/88253303