Qt实现闹钟小程序

本文实例为大家分享了Qt之闹钟小程序的具体代码,供大家参考,具体内容如下

-首先

首先我们利用Qt的designer 设计好我们需要的闹钟界面,设计界面如下图:

其次我们来分别利用信号分别完成他们各自的槽函数
在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中完成各个槽函数。这里我们 得不断检测闹钟定时时间是否到达预设时间,我们必须得间隔500ms检测一次,因此我们引入了定时器,QTimer,开启之后,进入循环检测闹钟是否到点。
这里,我们选用复选框来设置铃声,当然也可以改为下拉菜单的方式。
/ 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();  //获取时钟编辑器的值 ,为后续 系统时间的比较做准备

}

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 类。
最后效果如下所示:

这里,只加入了三首歌,我们可以新增复选框吗,然后在之后的复选框的槽函数中加入和上述复选框的槽函数类似的代码,增加新的音乐。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 利用QT写一个极简单的图形化Python闹钟程序

    今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. 看到这里想必大家要问了,何必去做一个这样弱爆了的程序呢.显然,教育意义大于其实际用处. 像其他的模块一样,QT界面包是需要加载的. 我们用到了命令行输入,所以,sys模块也是必须的. 用到了时间,但是我们不需要使用time模块,我们用QT提供的QTime模块. 让我们先写import 语句部分. i

  • Qt实现闹钟小程序

    本文实例为大家分享了Qt之闹钟小程序的具体代码,供大家参考,具体内容如下 -首先 首先我们利用Qt的designer 设计好我们需要的闹钟界面,设计界面如下图: 其次我们来分别利用信号分别完成他们各自的槽函数 在mainwindow.h中,我们定义了下面这些私有成员变量,如下: / mainwindow.h文件/** #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTimeEdit&g

  • Android实现闹钟小程序

    最近写了个闹钟的程序,看到SharedPreferences在一个程序中可以共享数据,SharedPreferences是一个轻量级的键值存储机制,只可以存储基本数据类型.我就拿来用用,没想到SharedPreferences太好了,真是轻量级的保存数据的好的工具,比sqlite好用多了!以后我又多了一种编程思想了,呵呵,所以现在分享给大家,特别注意这点:这个无法直接在多个程序间共享Preferences数据.程序关闭再打开时间仍然保留你上次设置的时间.这就是Preferences的作用!   

  • 从Chrome App看微信小程序的发展前景

    关于微信小程序的消息算是这几天互联网新闻中的一个热点话题,各种推想猜测也是层出不穷.小程序只是处于一个内测阶段,但是,2010年谷歌公司也曾经开发过基于Chrome浏览器的Chrome App,两者虽然是两款不同的产品,但是在很多地方都有很多的相似之处,对Chrome App的了解也许对我们对小程序的发张和前景的分析带来一定的帮助. 关于微信和Chrome 首先就是关于微信和Chrome两个平台的状况,微信给的月活跃用户为7亿而Chrome仅仅移动版就有10亿的用户数量,两者都拥有巨大的群众基础

  • 微信小程序 setData使用方法及常用错误解决办法

    微信小程序 setData使用方法及常用错误解决办法 最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序. 就在这里..没错就是这里,传回来的值是以jsonarray格式传过来的. 我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok, 结果没想到小程序setData()设置数组对象的某个元

  • 使用Python制作简单的小程序IP查看器功能

    前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固定的关系,所以我们需要借助网络上的数据库,或者说借助第三方的服务来查询.这里,我们选用IP.CN提供的IP地址查询服务. 基本环境配置 版本:Python3 系统:Windows 相关模块:PyQt5 实现效果图 完整代码 运行以上程序,点击按钮,大约卡顿半秒后,文本标签处就会显示我们电脑的IP地址

  • 微信小程序语音同步智能识别的实现案例代码解析

    一.背景 在小程序的一些应用场景中,会有语音转文字的需求.原有的做法一般是先通过小程序的录音功能录下语音文件,然后再通过调用语音智能识别WebApi(比如百度云AI平台,科大讯飞平台)将语音文件转成文字信息,以上的做法比较繁琐且用户的体验性较差. 为解决此问题,微信直接开放了同声传译的插件,小程序作者可以直接使用该插件进行语音同声传译的开发.此文章将通过前后端整合应用的完整案例完成语音的实时转换,并将语音上传到服务端后台备份. 二.同声传译插件介绍 微信同声传译由微信智聆语音团队.微信翻译团队与

  • Qt编程实现小时钟

    Hello World! 学习编程语言的最简单最经典的小程序,当然Qt也不例外.在学习画图时,我觉得写个时钟小程序也是个比较好的开始.在之前的<Matlab及Java小时>一文中,我也从写时钟程序作为学习画图的开始.三者之间的不同点在于,matlab是通过while循环来进行重绘,Java和Qt事件来处理.实时显示时钟,都是通过改变指针与坐标轴的相对位置来实现的.前两者都是改变指针,而Qt是旋转坐标轴.具体代码如下: 1.widget.h文件 #ifndef WIDGET_H #define

  • hta文件介绍(编写小程序的好东东)

    总是想用script语言编写一些小程序,以前总是写成html格式的,可每次打开都会有安全提示,今天突然发现了如果保存成hta格式的文件,效果大不一样. 嘿嘿.. HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB.C++等程序语言所设计的软件没什么差别. 下面是一个HTA的例子: 复制代码 代码如下: <!-example1.hta--><html><head><

  • 基于angular实现模拟微信小程序swiper组件

    这段时间的主业是完成一个家政类小程序,终于是过审核发布了.不得不说微信的这个小程序生态还是颇有想法的,抛开他现有的一些问题不说,其提供的组件系统乍一看还是蛮酷的.比如其提供的一个叫swiper的视图组件,就可以在写界面的时候省不少时间和代码,轮播图片跟可滑动列表都可以用.导致现在回来写angular项目时也想整一个这样的组件出来,本文就将使用angular的组件能力和服务能力完成这么一个比较通用,耦合度较低的swiper出来. 首先要选择使用的技术,要实现的是与界面打交道的东西,自然是实现成一个

  • 微信小程序商城项目之淘宝分类入口(2)

    分类入口,已经成为了商城项目必须的布局之一,这里以仿照淘宝的分类入口来做案例 下图红框部分,就是本文重点讲解部分,另外本文并没有写点击某个入口跳转页面. 如需学习页面跳转的同学,可以参考此文 微信小程序的页面跳转和参数传递 -- 微信小程序教程系列(6) 页面分析: 使用for循环遍历所有项,插入页面,页面中的项使用左浮动,并使用百分比布局,设置20%的宽度每一项. 这样满5个item后,自动排在下一行 wxml: <view class="menu-wrp"> <!

随机推荐