基于Qt5的闹钟实现代码.doc

上传人:b****1 文档编号:236102 上传时间:2022-10-07 格式:DOC 页数:7 大小:135.50KB
下载 相关 举报
基于Qt5的闹钟实现代码.doc_第1页
第1页 / 共7页
基于Qt5的闹钟实现代码.doc_第2页
第2页 / 共7页
基于Qt5的闹钟实现代码.doc_第3页
第3页 / 共7页
基于Qt5的闹钟实现代码.doc_第4页
第4页 / 共7页
基于Qt5的闹钟实现代码.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

基于Qt5的闹钟实现代码.doc

《基于Qt5的闹钟实现代码.doc》由会员分享,可在线阅读,更多相关《基于Qt5的闹钟实现代码.doc(7页珍藏版)》请在冰豆网上搜索。

基于Qt5的闹钟实现代码.doc

本程序基于QWidget实现,可以动态显示钟表,并且可以添加铃声

头文件widget.h代码如下:

#ifndefWIDGET_H

#defineWIDGET_H

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

namespaceUi{

classWidget;

}

classWidget:

publicQWidget

{

Q_OBJECT

public:

explicitWidget(QWidget*parent=0);

~Widget();

signals:

voidisCurrentTime();

private:

Ui:

:

Widget*ui;

voidinit();

voidlayout();

voidcon();

QLCDNumber*lcdNumber;

QLabel*label;

QTimeEdit*timeEdit;

QPushButton*button;

QTimer*timer;

QTimer*uptimer;

QTimer*dtimer;

QTimer*itimer;

QRectrect;

intx;

inty;

doubledu;

QSystemTrayIcon*trayIcon;

QAction*restoreAct;

QAction*quitAct;

QMenu*trayIconMenu;

privateslots:

voidclockChange();

voiddialogUp();

voidmini();

voiddown();

voidcomToCur();

protected:

voidcloseEvent(QCloseEvent*e);

};

#endif//WIDGET_H

源文件widget.cpp代码如下:

#include"widget.h"

#include"ui_widget.h"

#include

#include

#include

Widget:

:

Widget(QWidget*parent):

QWidget(parent),

ui(newUi:

:

Widget)

{

ui->setupUi(this);

init();

layout();

con();

voidWidget:

:

init()

{

setWindowTitle("我的闹钟");

setFixedSize(300,80);

timer=newQTimer;

uptimer=newQTimer;

dtimer=newQTimer;

itimer=newQTimer;

lcdNumber=newQLCDNumber;

lcdNumber->setFixedSize(150,50);

lcdNumber->setDigitCount(12);

lcdNumber->setSegmentStyle(QLCDNumber:

:

Flat);

lcdNumber->display(QTime:

:

currentTime().toString("hh:

mm:

ss:

zzz"));

label=newQLabel("闹钟");

timeEdit=newQTimeEdit;

timeEdit->setDisplayFormat("hh:

mm:

ss");

button=newQPushButton("确定");

trayIcon=newQSystemTrayIcon;

trayIcon->setIcon(QIcon(":

/new/prefix1/clock.ico"));

trayIcon->show();

setWindowIcon(QIcon(":

/new/prefix1/clock.ico"));

restoreAct=newQAction("显示",this);

quitAct=newQAction("退出",this);

trayIconMenu=newQMenu;

trayIconMenu->addAction(restoreAct);

trayIconMenu->addAction(quitAct);

trayIcon->setContextMenu(trayIconMenu);

setWindowFlags(Qt:

:

WindowStaysOnTopHint);

}

voidWidget:

:

layout()

{

QHBoxLayout*rightTopLay=newQHBoxLayout;

rightTopLay->addWidget(label);

rightTopLay->addWidget(timeEdit);

QHBoxLayout*rightButtonLay=newQHBoxLayout;

rightButtonLay->addStretch();

rightButtonLay->addWidget(button);

QVBoxLayout*rightLay=newQVBoxLayout;

rightLay->addLayout(rightTopLay);

rightLay->addLayout(rightButtonLay);

rightLay->addStretch();

QHBoxLayout*m=newQHBoxLayout;

m->addWidget(lcdNumber);

m->addLayout(rightLay);

setLayout(m);

QDesktopWidget*p=newQDesktopWidget;

p=QApplication:

:

desktop();//

rect=p->rect();

x=rect.right()-width()-2;//

y=rect.bottom()+30;//

setGeometry(x,y,width(),height());

}

voidWidget:

:

con()

{

connect(timer,SIGNAL(timeout()),this,SLOT(clockChange()));

timer->start

(1);

connect(uptimer,SIGNAL(timeout()),this,SLOT(dialogUp()));

uptimer->start(20);

connect(dtimer,SIGNAL(timeout()),this,SLOT(down()));

dtimer->start(20);

connect(button,SIGNAL(clicked(bool)),dtimer,SIGNAL(timeout()));

connect(button,SIGNAL(clicked(bool)),this,SLOT(mini()));

connect(itimer,SIGNAL(timeout()),this,SLOT(comToCur()));

itimer->start(20);

connect(restoreAct,SIGNAL(triggered(bool)),uptimer,SIGNAL(timeout()));

connect(this,SIGNAL(isCurrentTime()),uptimer,SIGNAL(timeout()));

connect(itimer,SIGNAL(timeout()),this,SLOT(comToCur()));

itimer->start(20);

connect(quitAct,SIGNAL(triggered(bool)),this,SLOT(close()));

}

voidWidget:

:

clockChange()

{

lcdNumber->display(QTime:

:

currentTime().toString("hh:

mm:

ss:

zzz"));

}

voidWidget:

:

dialogUp()

{

show();

uptimer->start(20);

if(y>=rect.bottom()-height()-50)

{

y-=2;

}

else{

uptimer->stop();

}

setGeometry(x,y,width(),height());

}

voidWidget:

:

down()

{

dtimer->start(20);

if(y

{

y+=height()+20;

}

else

{

dtimer->stop();

}

setGeometry(x,y,width(),height());

}

voidWidget:

:

mini()

{

hide();

}

voidWidget:

:

closeEvent(QCloseEvent*e)

{

QMessageBox:

:

information(0,"退出","您确定要退出吗?

");

}

voidWidget:

:

comToCur()

{

if(QVariant(QTime:

:

currentTime().toString())==QVariant(timeEdit->time()).toString())

{

QApplication:

:

beep();

emitisCurrentTime();

}

}

Widget:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1