• 3490阅读
  • 1回复

电子钟不能正确显示。 [复制链接]

上一主题 下一主题
离线xueyuyang
 
只看楼主 正序阅读 楼主  发表于: 2009-05-24
此程序是为了显示一个可以不断变化的电子钟,但是显示错误。希望大家可以帮帮忙。
main 文件
#include<QApplication>
#include"digiclock.h"
int main(int argc,char *argv[])
{   QApplication app(argc,argv);
   QLCDNumber *lcd=new QLCDNumber;
   lcd->show();   return app.exec();
}    
digiclock.CPP文件
#include"digiclock.h"
#include<QTime>
#include<QMouseEvent>
#include<QTimer>
#include<QPalette>
DigiClock::DigiClock(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);
connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));
timer->start(1000);
showTime();
resize(150,60);
showColon=true;
}
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->button()& Qt::LeftButton)
{    
  move(e->globalPos()-dragPosition);    
  e->accept();  
}
}

digiclock头文件
#include<QLCDNumber>
#include<QPoint>
class DigiClock:public QLCDNumber
{ Q_OBJECT
  public:
    DigiClock(QWidget *parent=0);
    void mousePressEvent(QMouseEvent *);
        void mouseMoveEvent(QMouseEvent *);
public slots:
        void showTime();
private :
        QPoint dragPosition;    
        bool showColon;
};
离线anycall
只看该作者 1楼 发表于: 2009-05-31
Main函数中,似乎不应该再用  QLCDNumber *lcd=new QLCDNumber;

而应该用DigiClock *lcd = new DigiClock;吧。
快速回复
限100 字节
 
上一个 下一个