QT實現電子時鐘
阿新 • • 發佈:2021-02-04
QT實現電子時鐘
實現方法
主視窗QDialog呼叫QLCDNumber視窗
實現效果
程式碼
標頭檔案
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog (QWidget *parent = nullptr);
~Dialog();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
digiclock.h
#ifndef DIGICLOCK_H
#define DIGICLOCK_H
#include<QLCDNumber>
class DigiClock : public QLCDNumber
{
Q_OBJECT
public:
DigiClock(QWidget *parent=0);
void mousePressEvent(QMouseEvent * );
void mouseMoveEvent(QMouseEvent *);
public slots:
void showTime();
private:
QPoint dragPosition;
bool showColon;
};
#endif // DIGICLOCK_H
原始檔
main.cpp
#include "dialog.h"
#include"digiclock.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a (argc, argv);
DigiClock clock;
clock.show();
return a.exec();
}
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
digiclock.cpp
#include <QTimer>
#include<QTime>
#include<QMouseEvent>
#include "digiclock.h"
//#include "ui_digiclock.h"
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(150,60);
showColon=true;
}
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();
}
}
//QDialog::QDialog(QWidget *parent)
// : QDialog(parent)
// , ui(new Ui::QDialog)
//{
// ui->setupUi(this);
//}
//QDialog::~QDialog()
//{
// delete ui;
//}