QT:电子时钟

来源:互联网 发布:三年学java 编辑:程序博客网 时间:2024/04/30 04:16

一、简介

  继承自QLCDNumber的类实现电子时钟,并增加程序启动欢迎画面。

二、运行图

(1)启动界面

(2)时钟界面,可以修改程序去掉前面的日期。

三、详解

1、启动欢迎界面

 

[cpp] view plain copy
  1.   
  2.     QPixmap pixmap(":/digitclock.jpg");  
  3.     QSplashScreen splash(pixmap);  
  4.     splash.show();  
  5.   
  6.     app.processEvents();  
  7.     DigiClock clock;  
  8.     splash.finish(&clock);  
  9.     clock.show();  
  10.  
splash.finish(&clock);一般放在DigiClock clock; clock.show();之后表示主程序启动完成后,此处有背景的影响。app.processEvents();通知QT来处理未处理的事件。一般不要执行很长时间的代码放到主线程里,以免造成用户界面冻结。

 

2、设置定时

先将窗体设置成无标题栏,并设置背景颜色为darkGreen。启动定时0.5秒一次,主要考虑到秒点的运动。

 

[cpp] view plain copy
  1. DigiClock::DigiClock(QWidget *parent)  
  2.     QLCDNumber(parent)  
  3.  
  4.     QTest::qWait(2000);  
  5.     QPalette palette();  
  6.     p.setColor(QPalette::Window,Qt::darkGreen);  
  7.     setPalette(p);  
  8.   
  9.     setWindowFlags(Qt::FramelessWindowHint);  
  10.     setFrameStyle(QFrame::Panel QFrame::Raised);  
  11.     this->setNumDigits(19);  
  12.   
  13.     setGeometry(QApplication::desktop()->width() 200, QApplication::desktop()->height() 25, 400, 50);  
  14.   
  15.     QTimer *timer new QTimer(this);  
  16.     connect(timer, SIGNAL(timeout()), thisSLOT(showTime()));  
  17.   
  18.     timer->start(500);  
  19.     showTime();  
  20.     showColon=true 
  21.  
setWindowFlags(Qt::FramelessWindowHint);设置样式,setGeometry(QApplication::desktop()->width() / 2 - 200, QApplication::desktop()->height() / 2 - 25, 400, 50);设置程序启动的位置,当然鼠标左键可以移动。timer->start(500);定时500ms。

3、显示时间

 

[cpp] view plain copy
  1. void DigiClock::showTime()  
  2.  
  3.      QDateTime time QDateTime::currentDateTime();  
  4.      QString text time.toString("yyyy-MM-dd hh:MM:ss");  
  5.   
  6.      if(showColon)  
  7.         text[16] ':' 
  8.         showColon false 
  9.       
  10.      else  
  11.         text[16] ' 
  12.         showColon true        
  13.       
  14.      display(text);  
  15.  

时间的显示主要在此处控制,time.toString("yyyy-MM-dd hh:MM:ss");控制显示的格式。

4、鼠标左右键

 

[cpp] view plain copy
  1. void DigiClock::mousePressEvent(QMouseEvent e)  
  2.  
  3.     if (e->button() == Qt::LeftButton)  
  4.         dragPosition e->globalPos() frameGeometry().topLeft();  
  5.         e->accept();  
  6.      
  7.     if (e->button() == Qt::RightButton)  
  8.         close();  
  9.          
  10.  
  11.   
  12. void DigiClock::mouseMoveEvent(QMouseEvent e)  
  13.  
  14.     if (e->buttons() Qt::LeftButton)  
  15.         move(e->globalPos() dragPosition);  
  16.         e->accept();  
  17.      
  18.  

鼠标左键单击不放可以来回移动窗口,右键关闭窗口。

原创粉丝点击