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();
}
运行效果:
相关文章推荐
- Qt零基础教程(四)QWidget详解(3):QWidget的几何结构
- Qt 5.3 下OpenCV 2.4.11 开发(4)Mat 像素引用
- Qt 3D教程(三)实现对模型材质参数的控制
- QT 查询数据库
- 开始学习QT
- Qt 3D教程(二)初步显示3D的内容
- qt屏蔽事件的方法
- Qt Creator 窗体控件自适应窗口大小布局
- Qt 3D教程(一)使用Qt Widgets建立一个框架
- QT中qlistwidget和qtableview用法
- QTP/UFT以XPath作为属性标识对象
- qtableview和qtablewidget区别
- Qt 5.3 下OpenCV 2.4.11 开发(0)图像处理基本概念
- QT5双缓冲绘图简单代码
- Qt 之 show,hide,setVisible,setHidden,close 等小结
- qt-creator astyle Peizhi
- qt对象销毁过程delete
- Qt 5.3 下OpenCV 2.4.11 开发 目录
- Qt 5.3 下OpenCV 2.4.11 开发(1)图片预览
- Qt 5.3 下OpenCV 2.4.11 开发(2)摄像头采集