赞
踩
根据qt的<QLDNumber>做了一个qt液晶电子时钟.
实时显示当前时间,左键可以拖动时钟在屏幕的位置,右键点击关闭显示.
新建一个class文件,让这个文件的父类是QLCDNumber
相关功能变量定义和函数实现
.c文件代码
这里需要注意的一点是event->button是获取的最后一次点击,而event->buttons是检测是否按下,故计算相对位置是使用button,拖动时需要使用buttons
- #include "digitalclock.h"
- #include<QDebug>
- DigitalClock::DigitalClock(QWidget * parent) :QLCDNumber(parent)
- {
- //设置蓝色背景
- QPalette p = palette();//获取当前的调色板
- p.setColor(QPalette::Window,Qt::blue);//对窗体设置颜色 蓝色
- setPalette(p);
-
- //无边框窗体风格
- setWindowFlags(Qt::FramelessWindowHint);
-
- //设置窗体的透明度
- setWindowOpacity(0.5);
-
- //定时器
- QTimer * timer = new QTimer(this);
- //信号槽 定时器时间到 启动 showtime
- connect(timer,&QTimer::timeout,this,&DigitalClock::showTime);
- timer->start(1000);//间隔1000ms(1s)
-
- showTime();
- //重置窗口大小
- resize(150,60);
- //冒号显示 flag = true
- m_showColon = true;
- }
- //button 是检测最后一次点击
- void DigitalClock::mousePressEvent(QMouseEvent *event)
- {
- if(event->button() == Qt::LeftButton)//鼠标左键{
- {
- m_dragPosition = event->globalPos()//鼠标相对于屏幕左上角偏移的位置
- - frameGeometry().topLeft();//时钟窗体左上角位置
- qDebug()<<m_dragPosition;
- //接受
- event->accept();
- }
- if(event->button() == Qt::RightButton){
- close();
- }
-
- }
- /*
- buttons()方法返回的是一个整数,其中每一位代表一个按钮的状态。这样的设计允许同时检查多个按钮的状态。例如,你可以检查是否同时按下了左键和右键。
- 而button()方法通常用于获取最后一个点击的按钮。
- 所以在这里,为了检查鼠标左键是否被按下,我们使用buttons()方法,并通过位与运算符&来检查特定的位。
- */
-
- void DigitalClock::mouseMoveEvent(QMouseEvent *event)
- {
-
- if(event->buttons() == Qt::LeftButton){
- move(event->globalPos() - m_dragPosition);
- event->accept();
- }
-
- }
-
- void DigitalClock::showTime()
- {
- //显示时间
- QTime time = QTime ::currentTime();
- QString strTime = time.toString("hh:mm");
- if(m_showColon){
- strTime[2] = ':';
- }else{
- strTime[2] = ' ';
- }
-
- display(strTime);
- m_showColon = !m_showColon;
- }
希望对大家有所帮助.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。