天天看點

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入門

繼續閱讀