天天看点

Qt之对话框设计——电子时钟

digiclock.h

#ifndef DIGICLOCK_H  

#define DIGICLOCK_H  

#include <QLCDNumber>  

#include <QPoint>  

class DigiClock : public QLCDNumber  

{  

    Q_OBJECT  

public:  

    DigiClock(QWidget *parent = 0);  

    ~DigiClock();  

    void mousePressEvent(QMouseEvent *);  

    void mouseMoveEvent(QMouseEvent *);  

public slots:  

    void showTime();  

private:  

    QPoint  dragPosition;   //鼠标点击位置相对窗体左上角的偏移量  

    bool showColon;     //是否显示“:”  

};  

#endif // CLOCK_H  

digiclock.cpp

#include "digiclock.h"  

#include <QPalette>  

#include <QTimer>  

#include <QTime>  

#include <QMouseEvent>  

DigiClock::DigiClock(QWidget *parent)  

    : QLCDNumber(parent)  

    QPalette plt;   //实例化调色板对象  

    plt.setColor(QPalette::Window,Qt::blue);  

    setPalette(plt);  

    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;  

}  

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);  

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文转自韩兆新博客博客园博客,原文链接:http://www.cnblogs.com/hanzhaoxin/archive/2012/11/22/2783459.html,如需转载请自行联系原作者

上一篇: LESS入门

继续阅读