您的位置:首页 > 编程语言 > Qt开发

Qt浅谈之电子时钟

2015-01-04 21:58 309 查看


一、简介

继承自QLCDNumber的类实现电子时钟,并增加程序启动欢迎画面。


二、运行图

(1)启动界面



(2)时钟界面,可以修改程序去掉前面的日期。



三、详解

1、启动欢迎界面

[cpp]
view plaincopy





{
QPixmap pixmap(":/digitclock.jpg");
QSplashScreen splash(pixmap);
splash.show();

app.processEvents();
DigiClock clock;
splash.finish(&clock);
clock.show();
}

splash.finish(&clock);一般放在DigiClock clock; clock.show();之后表示主程序启动完成后,此处有背景的影响。app.processEvents();通知QT来处理未处理的事件。一般不要执行很长时间的代码放到主线程里,以免造成用户界面冻结。

2、设置定时

先将窗体设置成无标题栏,并设置背景颜色为darkGreen。启动定时0.5秒一次,主要考虑到秒点的运动。

[cpp]
view plaincopy





DigiClock::DigiClock(QWidget *parent)
: QLCDNumber(parent)
{
QTest::qWait(2000);
QPalette p = palette();
p.setColor(QPalette::Window,Qt::darkGreen);
setPalette(p);

setWindowFlags(Qt::FramelessWindowHint);
setFrameStyle(QFrame::Panel | QFrame::Raised);
this->setNumDigits(19);

setGeometry(QApplication::desktop()->width() / 2 - 200, QApplication::desktop()->height() / 2 - 25, 400, 50);

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));

timer->start(500);
showTime();
showColon=true;
}

setWindowFlags(Qt::FramelessWindowHint);设置样式,setGeometry(QApplication::desktop()->width() / 2 - 200, QApplication::desktop()->height() / 2 - 25, 400, 50);设置程序启动的位置,当然鼠标左键可以移动。timer->start(500);定时500ms。

3、显示时间

[cpp]
view plaincopy





void DigiClock::showTime()
{
QDateTime time = QDateTime::currentDateTime();
QString text = time.toString("yyyy-MM-dd hh:MM:ss");

if(showColon) {
text[16] = ':';
showColon = false;
}
else {
text[16] = ' ';
showColon = true;
}
display(text);
}

时间的显示主要在此处控制,time.toString("yyyy-MM-dd hh:MM:ss");控制显示的格式。

4、鼠标左右键

[cpp]
view plaincopy

void DigiClock::mousePressEvent(QMouseEvent * e)
{
if (e->button() == Qt::LeftButton) {
dragPosition = e->globalPos() - frameGeometry().topLeft();
e->accept();
}
if (e->button() == Qt::RightButton) {
close();
}
}

void DigiClock::mouseMoveEvent(QMouseEvent * e)
{
if (e->buttons() & Qt::LeftButton) {
move(e->globalPos() - dragPosition);
e->accept();
}
}

鼠标左键单击不放可以来回移动窗口,右键关闭窗口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: