? ? ? ? 根據qt的<QLDNumber>做了一個qt液晶電子時鐘.
? ? ? ? 結果
? ? ? ? ? ? ? ? ? 實時顯示當前時間,左鍵可以拖動時鐘在屏幕的位置,右鍵點擊關閉顯示.
????????
? ? ? ? 實現過程
? ? ? ? 新建一個class文件,讓這個文件的父類是QLCDNumber
????????
? ? ? ? 相關功能變量定義和函數實現
? ? ? ? .c文件代碼
? ? ? ? 這里需要注意的一點是event->button是獲取的最后一次點擊,而event->buttons是檢測是否按下,故計算相對位置是使用button,拖動時需要使用buttons
#include "digitalclock.h"
#include<QDebug>
DigitalClock::DigitalClock(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);//信號槽 定時器時間到 啟動 showtimeconnect(timer,&QTimer::timeout,this,&DigitalClock::showTime);timer->start(1000);//間隔1000ms(1s)showTime();//重置窗口大小resize(150,60);//冒號顯示 flag = truem_showColon = true;
}
//button 是檢測最后一次點擊
void DigitalClock::mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton)//鼠標左鍵{{m_dragPosition = event->globalPos()//鼠標相對于屏幕左上角偏移的位置- frameGeometry().topLeft();//時鐘窗體左上角位置qDebug()<<m_dragPosition;//接受event->accept();}if(event->button() == Qt::RightButton){close();}}
/*
buttons()方法返回的是一個整數,其中每一位代表一個按鈕的狀態。這樣的設計允許同時檢查多個按鈕的狀態。例如,你可以檢查是否同時按下了左鍵和右鍵。
而button()方法通常用于獲取最后一個點擊的按鈕。
所以在這里,為了檢查鼠標左鍵是否被按下,我們使用buttons()方法,并通過位與運算符&來檢查特定的位。
*/void DigitalClock::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons() == Qt::LeftButton){move(event->globalPos() - m_dragPosition);event->accept();}}void DigitalClock::showTime()
{//顯示時間QTime time = QTime ::currentTime();QString strTime = time.toString("hh:mm");if(m_showColon){strTime[2] = ':';}else{strTime[2] = ' ';}display(strTime);m_showColon = !m_showColon;
}
? ? ? ? ? ?希望對大家有所幫助.? ?