⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clockwidget.cpp

📁 指针式时钟QT-C++QPushButton 按钮类QButtonGroup 按钮组合类QGroupBox 群组类QDateTimeEdit 日期时间编辑框类QLineEdit 行编辑框类QTextE
💻 CPP
字号:
#include<QtGui>
#include<QtCore>
#include "ClockWidget.h"
MyTime *mytime=new MyTime();

extern QTimeEdit *timeEdit;

//构造函数
MyTime :: MyTime()
        
{
       hour=0;
       minute=0;
       second=0;
}
ClockWidget :: ClockWidget(QWidget *parent)
    :QWidget(parent)
{              
              
                 
       QTime curtime0 = QTime::currentTime();
         
              QTimeEdit *timeEdit=new QTimeEdit(this); 
         timeEdit->setGeometry(360,400,150,45);       
     QLabel *label=new QLabel(tr ("时间"));
             
            label->setGeometry(360,250,60,30);
            QHBoxLayout *topLeftLayout = new QHBoxLayout;
     topLeftLayout->addWidget (label);
     QVBoxLayout *leftLayout = new QVBoxLayout;
     leftLayout->addLayout (topLeftLayout);
    
       
       startTimer(1000);
              setMinimumSize(250,250);
       setMaximumSize(300,300);
       setWindowTitle("my clock!");
       //时间默认值 
       mytime->setHour(curtime0.hour());
       mytime->setMinute(curtime0.minute());
       mytime->setSecond(curtime0.second());
           
        //时间显示窗口与钟表的连接 
        connect(timeEdit,SIGNAL(timeChanged(timeEdit)),mytime,SLOT(getHms(timeEdit.hour(),timeEdit.minute(),timeEdit.second()))); 
}
void ClockWidget :: timerEvent(QTimerEvent *)
{
     update();
}
void ClockWidget :: paintEvent(QPaintEvent *)
{
     
     if(mytime->second>59){
                          mytime->second=mytime->second%60;
                          if(mytime->second==0)
                          mytime->minute++;
                          }
     if(mytime->minute>59){
                           mytime->minute=mytime->minute%60;
                           if(mytime->minute==0)
                           mytime->hour++;
                           }
     if(mytime->hour>11)mytime->hour=mytime->hour%12;
     mytime->second++;
     QPainter painter(this);
     painter.setWindow(-30,-30,60,60);
     painter.save();
     painter.setBrush(Qt::white);
     painter.drawEllipse(QPoint::QPoint(0,0),30,30);
     painter.restore();
    
     
     //画时针 
     painter.save();
     painter.rotate(30*(mytime->hour%12)+mytime->minute/2);
     painter.setPen(Qt::black);
     painter.drawLine(-2,0,15,0);
     painter.restore();
     //画分针
     painter.save();
     painter.rotate(mytime->minute*6+0.1*mytime->second);
     painter.setPen(Qt::blue);
     painter.drawLine(-5,0,25,0);
     painter.restore();
     //画秒针
     painter.save();
     painter.rotate((mytime->second-25)*6); 
     painter.setPen(Qt::red);
     painter.drawLine(-10,0,30,0);
     painter.restore();
     //画时钟刻度
       //大刻度
     painter.save();
     painter.setPen(Qt::red);
     for(int i=0;i<12;i++)
     {
             painter.rotate(30);
             painter.drawLine(28,0,30,0);
     }
     painter.restore();
        //小刻度
     painter.save();
     painter.setPen(Qt::blue);
     for(int j=0;j<60;j++)
     {
             if((j%5)!=0)
             painter.drawLine(29,0,30,0);
             painter.rotate(6.0);
             }
      painter.restore();
      
}                                                                                                  
               

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -