当前位置:   article > 正文

QT之液晶电子时钟

QT之液晶电子时钟

        根据qt的<QLDNumber>做了一个qt液晶电子时钟.

        结果

                  实时显示当前时间,左键可以拖动时钟在屏幕的位置,右键点击关闭显示.

        

        实现过程

        新建一个class文件,让这个文件的父类是QLCDNumber

        

        相关功能变量定义和函数实现

        .c文件代码

        这里需要注意的一点是event->button是获取的最后一次点击,而event->buttons是检测是否按下,故计算相对位置是使用button,拖动时需要使用buttons

  1. #include "digitalclock.h"
  2. #include<QDebug>
  3. DigitalClock::DigitalClock(QWidget * parent) :QLCDNumber(parent)
  4. {
  5. //设置蓝色背景
  6. QPalette p = palette();//获取当前的调色板
  7. p.setColor(QPalette::Window,Qt::blue);//对窗体设置颜色 蓝色
  8. setPalette(p);
  9. //无边框窗体风格
  10. setWindowFlags(Qt::FramelessWindowHint);
  11. //设置窗体的透明度
  12. setWindowOpacity(0.5);
  13. //定时器
  14. QTimer * timer = new QTimer(this);
  15. //信号槽 定时器时间到 启动 showtime
  16. connect(timer,&QTimer::timeout,this,&DigitalClock::showTime);
  17. timer->start(1000);//间隔1000ms(1s)
  18. showTime();
  19. //重置窗口大小
  20. resize(150,60);
  21. //冒号显示 flag = true
  22. m_showColon = true;
  23. }
  24. //button 是检测最后一次点击
  25. void DigitalClock::mousePressEvent(QMouseEvent *event)
  26. {
  27. if(event->button() == Qt::LeftButton)//鼠标左键{
  28. {
  29. m_dragPosition = event->globalPos()//鼠标相对于屏幕左上角偏移的位置
  30. - frameGeometry().topLeft();//时钟窗体左上角位置
  31. qDebug()<<m_dragPosition;
  32. //接受
  33. event->accept();
  34. }
  35. if(event->button() == Qt::RightButton){
  36. close();
  37. }
  38. }
  39. /*
  40. buttons()方法返回的是一个整数,其中每一位代表一个按钮的状态。这样的设计允许同时检查多个按钮的状态。例如,你可以检查是否同时按下了左键和右键。
  41. 而button()方法通常用于获取最后一个点击的按钮。
  42. 所以在这里,为了检查鼠标左键是否被按下,我们使用buttons()方法,并通过位与运算符&来检查特定的位。
  43. */
  44. void DigitalClock::mouseMoveEvent(QMouseEvent *event)
  45. {
  46. if(event->buttons() == Qt::LeftButton){
  47. move(event->globalPos() - m_dragPosition);
  48. event->accept();
  49. }
  50. }
  51. void DigitalClock::showTime()
  52. {
  53. //显示时间
  54. QTime time = QTime ::currentTime();
  55. QString strTime = time.toString("hh:mm");
  56. if(m_showColon){
  57. strTime[2] = ':';
  58. }else{
  59. strTime[2] = ' ';
  60. }
  61. display(strTime);
  62. m_showColon = !m_showColon;
  63. }

           希望对大家有所帮助.   

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/199632
推荐阅读
相关标签
  

闽ICP备14008679号