手把手教你:用Qt做一个漂亮的电子时钟(纯代码)

原创 2016年05月30日 22:14:24

先看效果图:(帧速设置的有点快,其实是一秒闪一次)

可以用鼠标左键拖拽时钟,也可以点击鼠标右键关闭时钟。



实现步骤:

1、新建GUI应用,项目名称自定,基类选择“QDialog”,取消创建界面复选框。

2、添加提供主要显示界面的函数所在的文件。在“Clock“项目名上单击鼠标右键,在弹出的快捷菜单中选择”添加新文件“。
















3、在弹出的对话框中选择“C++类”,单击”选择“按钮,弹出”C++类向导“对话框。在”BaseClass“下面的下拉列表框中输入基类名”QLCDNumber“,在”类名“后面的文本框中输入类的名称"DigiClock"。

4、单击“下一步”按钮,最后完成创建。添加‘digiclock.h’和“digiclock.cpp”源文件。

5、在"digiclock.h"文件中,添加如下代码:

<span style="font-size:14px;">#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include <QMouseEvent>
#include <QLCDNumber>
#include "digiclock.h"
class DigiClock : public QLCDNumber
{
    Q_OBJECT

public:
    DigiClock(QWidget *parent=0);
    void mousePressEvent(QMouseEvent *);
    void mouseMoveEvent(QMouseEvent *);

public slots:
    void showTime();

private:
    QPoint dragPosition;
    bool showColon;
};

#endif // DIGICLOCK_H
</span>


6、在DigiClock的构造函数中,完成外观的设置,以及定时器的初始化工作。同时在“digiclock.cpp”文件中,完成槽函数showTime(),鼠标按下事件函数mousePressEvent()和鼠标移动事件mouseMoveEvent()。

添加如下代码:

<span style="font-size:14px;">#include "digiclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
#include <QDebug>

DigiClock::DigiClock(QWidget *parent)
    :QLCDNumber(8)
{
    QPalette p=palette();
    p.setColor(QPalette::Window, Qt::blue);
    setPalette(p);

    setWindowFlags(Qt::FramelessWindowHint);

    setWindowOpacity(0.8);

    QTimer *timer = new QTimer(this);
    connect(timer , SIGNAL(timeout()) , this , SLOT(showTime()));
    timer->start(1000);
    showTime();
    resize(230,50);
    showColon = true;
}

void DigiClock::showTime()
{
    QTime time = QTime::currentTime();

    //QTime time1 = QTime::currentTime();
    QString text = time.toString("hh:mm:ss");
    if(showColon)
    {
        text[2]=':';
        text[5]=':';
        showColon=false;
    }
    else
    {
        text[2]=' ';
        text[5]=' ';
        showColon=true;
    }

    //  qDebug() << text;
    display(text);
    //display(QTime::currentTime().toString("hh:mm"));


}

void DigiClock::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        dragPosition = event->globalPos()-frameGeometry().topLeft();
        event->accept();
    }
    if(event->button()==Qt::RightButton)
    {
        close();
    }
}

void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {
        move(event->globalPos()- dragPosition);
        event->accept();
    }
}

</span>


7、在主函数中,创建一个DigiClock类的对象,并显示出来。

代码如下:

<span style="font-size:14px;">#include "dialog.h"
#include <QApplication>
#include "digiclock.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    Dialog w;
//    w.show();

    DigiClock clock;
    clock.show();

    return a.exec();
}
</span>

至此,编写时钟的整个流程便完成了。编译运行程序。就可以得到文章开头的运行效果图。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

用Qt Creator编写一个简单的窗口程序

用Qt Creator编写一个简单的窗口程序
  • Lbb2016
  • Lbb2016
  • 2016年09月12日 01:50
  • 11548

Qt之界面换肤

简述常用的软件基本都有换肤功能,例如:QQ、360、迅雷等。换肤并没有想象中那么难,其实很简单,利用我们前面分享过的QSS系列文章完全可以实现各种样式的定制!简述 实现原理 效果 新建QSS文件 编写...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Qt多界面编程

参考资料 [1]Qt如何实现多窗口调用

Qt Gui编程中两种创建窗体界面方法

一、手动编写界面代码 Qt编程中所使用的语言是面向对象的C++,在初学GUI编程时,如果仅仅依靠Qt Designer编辑器来通过拖拽一些widget来设计界面,则会很容易迷惑我们,并且很难弄懂其中...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

QT的小闹钟例子的编译与部署

环境:FEDORA9 虚拟机            QT Creator (2011年5月份安装的) tiny6410 ARM实验板, 移植QT4.71 基本介绍 使用QT Creator 在...

Qt入门学习——Qt快速入门(vim纯代码编写)

original url: http://blog.csdn.net/tennysonsky/article/details/47981259 写代码前,先需搭建环境,详情请看...
  • junmuzi
  • junmuzi
  • 2015年11月25日 13:02
  • 5234

在Qt中使用C++代码创建界面

Qt 支持两种创建界面的方式: 一种是使用C++代码,Qt 自诞生以来就支持; 一种是使用 QML,可以创建个性化的界面;...
  • rl529014
  • rl529014
  • 2016年05月08日 15:05
  • 16789

Qt 不使用Qt Designer纯代码编写界面程序(初学者)总结

题记:从本科大一开始到现在,自己学计算机已经四年了,但是发现自己没有写过博客,心里捣鼓这件事由来已久,于是今天终于动手写博客了,不足之处望大家见谅。      刚学Qt时,发现这是一个陌生的IDE。学...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:手把手教你:用Qt做一个漂亮的电子时钟(纯代码)
举报原因:
原因补充:

(最多只允许输入30个字)