- QPalette p=palette()、p.setColor(QPalette::Window, Qt::blue)、setPalette§:设置电子时钟窗体背景色。
- setWindowFlags(Qt::FramelessWindowHint):设置窗体的标识,此处设置窗体为一个没有面板边框和标题栏的窗体。
- setWindowOpacity(0.5):设置窗体的透明度为0.5,即半透明。
- QTimer *timer=new QTimer(this):新建一个定时器对象。
- timer->start(1000):以1000ms为周期启动定时器。
- resize(150, 60):设置电子时钟显示的尺寸。
- QTime time = QTime::currentTime():获取当前系统时间,保存在一个QTime对象中。
- QString text = time.toString(“hh:mm”):把获取的当前时间转换为字符串类型。
- display(text):显示转换好的字符串时间。
digiclock.h
#ifndef DIGICLOCK_H
#define DIGICLOCK_H
#include <QLCDNumber>
#include <QMouseEvent>
#include <QWidget>
class DigiClock : public QLCDNumber
{
Q_OBJECT
public:
DigiClock(QWidget *parent=nullptr);
~DigiClock();
void mousePressEvent(QMouseEvent *);
void mouseMoveEvent(QMouseEvent *);
private slots:
void showTime();
private:
QPoint dragPosition;
bool showColon;
};
#endif // DIGICLOCK_H
digiclock.cpp
#include "digiclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>
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(160, 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 *event)
{
if (event->button() == Qt::LeftButton) {
dragPosition = event->globalPos() - frameGeometry().topLeft();
event->accept();
}
if (event->button() == Qt::RightButton) {
close();
}
}
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton) {
move(event->globalPos() - dragPosition);
event->accept();
}
}
main.cpp
#include "digiclock.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DigiClock clock;
clock.show();
return a.exec();
}