您的位置:首页 > 编程语言 > Qt开发

Qt:电子时钟

2015-07-29 20:07 507 查看

 digiclock.h

#ifndef DIGICLOCK_H

#define DIGICLOCK_H


#include <QLCDNumber>

#include <QMouseEvent>

#include <QPoint>



class DigiClock : public QLCDNumber

{

Q_OBJECT


public:

DigiClock(QWidget *parent = 0);

~DigiClock();


public:

void mousePressEvent(QMouseEvent *e);//重定义鼠标按下事件

void mouseMoveEvent(QMouseEvent *e);


public slots:

void showTime();


private:

QPoint dragPosition;//用于保存鼠标点相对电子钟窗体左上角的偏移值

bool showColon;//表示时间是否显示“:”

};


#endif // DIGICLOCK_H


digiclock.cpp



#include "digiclock.h"

#include <QPalette>

#include <QTimer>

#include <QTime>

#include <QTextEdit>

#include <QCoreApplication>

#include <QDateTime>


DigiClock::DigiClock(QWidget *parent)

: QLCDNumber(parent)

{

QPalette p = palette();//设置背景色

p.setColor(QPalette::Window,Qt::blue);

setPalette(p);


setWindowFlags(Qt::FramelessWindowHint);


setWindowOpacity(0.5);//设置窗体的透明度为0.5


// QTextEdit *edit = new QTextEdit;

// edit->setText("Splash
f88b
Example");

//  setCentralWidget(edit);


resize(555,555);

QDateTime n = QDateTime::currentDateTime();//让程序启动画面延迟的操作

QDateTime now;


    do{

now = QDateTime::currentDateTime();

QCoreApplication::processEvents();


}while(n.secsTo(now)<5);//


QTimer *timer = new QTimer(this);

connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));

timer->start(1000);//以1000毫秒为周期启动定时器


showTime();//初试时间显示


resize(150,60);


showColon = true;



}


DigiClock::~DigiClock()

{


}


void DigiClock::showTime()

{

QTime time = QTime::currentTime();

QString text = time.toString("hh:mm");

if(showColon)

    {

text[2] = ':';

showColon = false;

    }

else

    {

text[2] = ' ';

    showColon = true;

    }

display(text);//显示转换好的字符串时间

}


void DigiClock::mousePressEvent(QMouseEvent *e)

{

if(e->button() == Qt::LeftButton)

    {

dragPosition = e->globalPos() - frameGeometry().topLeft();

e->accept();

    }

if(e->button() == Qt::RightButton)

    {

close();

    }

}


void DigiClock::mouseMoveEvent(QMouseEvent *e)

{

if(e->buttons() & Qt::LeftButton)

    {

move(e->globalPos() - dragPosition);

e->accept();

    }

}


main.cpp



#include "digiclock.h"

#include <QApplication>

#include <QPixmap>

#include <QSplashScreen>


int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QPixmap pixmap(":/main.png");//让程序有启动画面

QSplashScreen splash(pixmap);

splash.show();

a.processEvents();//使程序在显示启动画面的同时仍能响应鼠标等其他事件

DigiClock w;

w.show();

splash.finish(&w);

return a.exec();

}

运行效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: