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();
}
}
鼠标左键单击不放可以来回移动窗口,右键关闭窗口。
相关文章推荐
- Qt浅谈之四:电子时钟
- Qt:电子时钟
- QT----电子时钟
- 用Qt做一个漂亮的电子时钟(纯代码)
- QT时间触发电子时钟
- Qt学习(五)-----自定义电子时钟
- 手把手教你:用Qt做一个漂亮的电子时钟(纯代码)
- Qt学习——电子时钟
- Qt - 与众不同的电子时钟
- Qt之对话框设计——电子时钟
- Qt-LCD电子时钟
- QT:电子时钟
- Qt学习13——电子时钟
- Qt之对话框设计——电子时钟
- Qt浅谈之三十九圆形进度条
- 005电子时钟
- Qt浅谈:Model/View实现表格和统计图
- Qt浅谈之一:内存泄露(总结)
- 实现电子时钟效果
- [转贴]采用实时时钟芯片DS1302+AT89C2051的红外遥控LED电子钟