預覽效果:左鍵點選不松手移動,右鍵點選關閉![]()
Qt電子時鐘
第一步建立項目
右鍵點選項目添加新檔案
選擇C++類
該類繼承自 QLCDNumber
clock.h代碼實作:
#ifndef CLOCK_H
#define CLOCK_H
#include <QDialog>
class Clock : public QDialog
{
Q_OBJECT
public:
Clock(QWidget *parent = nullptr);
~Clock();
};
#endif // CLOCK_H
clock.cpp代碼實作:
#include "clock.h"
Clock::Clock(QWidget *parent)
: QDialog(parent)
{
}
Clock::~Clock()
{
}
DigitalClock.h代碼實作
#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H
#include <QLCDNumber>
class DigitalClock : public QLCDNumber
{
Q_OBJECT
public:
DigitalClock(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
private slots:
void showTime();
private:
QPoint m_dragPosition;
bool m_showColon;
};
#endif // DIGITALCLOCK_H
DigitalClock.cpp代碼實作
#include "digitalclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
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);
connect(timer,&QTimer::timeout,this,&DigitalClock::showTime);
timer->start(1000);
resize(150,60);
m_showColon = true;
}
void DigitalClock::mousePressEvent(QMouseEvent *event)
{
//左鍵
if(event->button() == Qt::LeftButton){
//滑鼠相對螢幕左上角的位置 時鐘窗體左上角位置
m_dragPosition = event->globalPos()-frameGeometry().topLeft();
event->accept();
}
//右鍵關閉
if(event->button() == Qt::RightButton){
close();
}
}
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 strTimer = time.toString("hh:mm");
if(m_showColon){
strTimer[2] = ':';
}else{
strTimer[2] = ' ';
}
//顯示
display(strTimer);
m_showColon = !m_showColon;
}
main.cpp代碼實作
#include "clock.h"
#include <QApplication>
#include "digitalclock.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DigitalClock w;
w.show();
return a.exec();
}