【QT】计时器制作
应小伙伴的要求,做一个小计时器。功能是点击开始就从00:00:00开始计时,点击暂停就暂停计时,点击停止就停止计时。



界面如上图,使用ui设计师直接拖的。按钮和图标的图片都是网上下载的。用美图秀秀抠成了透明的,看起来会好看一点。
整体代码挺容易的,就是设一个定时器。代码如下:
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QDateTime>
#include <QTimer>
#include <QTime>
#include <QPixmap>
#include <QIcon> namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow(); private slots:
void updateTime();
void on_Start_clicked();
void on_Stop_clicked(); private:
Ui::MainWindow *ui;
QTimer * timer; //定时器 每秒更新时间
QTime * TimeRecord; //记录时间
bool isStart; //记录是否已经开始计时
QIcon * startIcon;
QIcon * pauseIcon;
QIcon * stopIcon;
}; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowIcon(QIcon(":/icon.png"));
setWindowTitle("TimerZ");
//setWindowFlags(Qt::FramelessWindowHint);
isStart = false; //初始为还未计时
timer = new QTimer; //初始化定时器
TimeRecord = new QTime(, , ); //初始化时间 ui->Timer->setDigitCount();
ui->Timer->setSegmentStyle(QLCDNumber::Flat);
ui->Timer->display(TimeRecord->toString("hh:mm:ss")); QPixmap pixStart(":/start.png");
startIcon = new QIcon(pixStart);
QPixmap pixPause(":/pause.png");
pauseIcon = new QIcon(pixPause);
QPixmap pixStop(":/stop.png");
stopIcon = new QIcon(pixStop); ui->Start->setIcon(*startIcon);
ui->Start->show();
ui->Stop->setIcon(*stopIcon);
ui->Stop->show(); connect(timer,SIGNAL(timeout()),this,SLOT(updateTime()));
} MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::updateTime()
{
*TimeRecord = TimeRecord->addSecs();
ui->Timer->display(TimeRecord->toString("hh:mm:ss"));
} void MainWindow::on_Start_clicked()
{
if(!isStart) //尚未开始 开始计时
{
ui->Start->setIconSize(QSize(,));
ui->Start->setIcon(*pauseIcon);
ui->Start->show();
timer->start(); }
else //已经开始,暂停
{
ui->Start->setIcon(*startIcon);
ui->Start->show();
timer->stop();
}
isStart = !isStart; } void MainWindow::on_Stop_clicked()
{
timer->stop(); //计时器停止
TimeRecord->setHMS(,,); //时间设为0
ui->Timer->display(TimeRecord->toString("hh:mm:ss")); //显示00:00:00
isStart = false;
}
main.cpp 没改过
#include "mainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show(); return a.exec();
}
具体的难点是在发布的时候,点击生成的EXE总是运行不了。结果发现需要把所有用到的动态链接库都拷到exe的文件夹里。
下一个DLLShow可以显示程序运行所用到的所有的链接库,把用到的库拷到一起就好了。还下了一个ProcessExplorer也是同样的用途,看起来会更数目一点。
使用DLLShow的时候会像下图这样:

用ProcessExplorer像下图这样:

加注:
在我把所有用到的DLL拷到一个文件夹后,再次用DLLShow检测,发现所有plugin文件夹下的DLL还是使用的原位置的,而不是我拷贝的那一个。这样,应用在其他电脑上无法使用。
后来发现,要把plugin文件夹拷贝到当前文件夹下,保留里面的目录结构,当然,不用的DLL可以删掉。然后,在代码主函数中加入:
QApplication::addLibraryPath("./plugins");
这样,再次运行时,所有的DLL都是使用拷贝的那一份了,就可以在其他电脑上运行了。
应用下载:http://pan.baidu.com/s/1o6j2rxw
【QT】计时器制作的更多相关文章
- QT程序制作deb包并安装在应用程序菜单
制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...
- 基于Qt Assistant制作软件帮助文档
Qt Assistant是Qt自带的一款可定制.可重新发行的帮助文件浏览器.Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器.关于Qt Assistant定制 ...
- 使用QT来制作串口终端
为什么要使用QT,因为它是跨平台的. 我现在使用的环境是Win7 64bit,使用VS的编译器来编译QT工程. 安装这套环境简单说一下:先到QT官网下载qt-windows-opensource-5. ...
- Qt计时器
在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. ■.QObject类的定时器QObje ...
- Qt socket制作一个简单的文件传输系统
服务器 用qt designer设计出服务器界面: 上代码: Server.pro #------------------------------------------------- # # Pro ...
- qt 计时器自动刷新图片
计时器 QTimer *timer; timer->start (); void PictureShow::stopStartPage() { if (timer->isActive()) ...
- Qt Creater 制作汽车仪表盘
最近项目用到了模拟仪表,网上下载大神编写的按个仪表Meter没有成功 转战 QWt 编译后,在creater中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...
- pyqt QT设计师制作关于对话框(软件版权申明)
一.实验环境 1.anaconda2 2.5.0 + python2.7 2.pyinstaller3.0 二.操作步骤 2.1 启动designer.exe 2.2 单击“文件” -> “新建 ...
- 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作
一 QT的内存管理 1 QT中的内存管理是QObject来管理的 2 QT中的内存管理没有cocos2dx中的引用计数 3 组件能够指定父对象 QTimer *timer = QTime ...
随机推荐
- POJ 2407 Relatives
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13920 Accepted: 6965 Description Give ...
- Repost: Set Delivery Block on SO
If SO is incomplete, then automatically set the delivery block on the SO header. as suggested by ear ...
- 《linux 网卡别名的添加和绑定》RHEL6
网卡别名的配置: 这个和ifconfig临时修改网卡ip 差不多,但是不一样.都是临时的,只要重启电脑就没了. 配永久的ip别名: cp ifcfg-eth0 ifcfg-eth0:0 vim if ...
- Shell脚本升级CentOS php版本v
#! /bin/sh #1.关闭selinuxcp -rp /etc/selinux/config /etc/selinux/config.baksetenforce 0sed -i '7s/enfo ...
- JAVA多线程学习--哲学家就餐问题
哲学家就餐问题是1965年由Dijkstra提出的一种线程同步的问题. 问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条.哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿 ...
- Python脚本控制的WebDriver 常用操作 <十三> 处理button group层的定位
下面将使用webdriver来定位同一层的按钮 测试用例场景 button group就是按钮组,将一组按钮排列在一起. 处理这种对象的思路一般是先找到button group的包裹(wrapper) ...
- hdu 2837 Calculation 指数循环节套路题
Calculation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- N个顶点构成多边形的面积
Input 输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1 ...
- Oracle 主键
给student 表产生 自增的序列主键 increment ; ----IBATIS简单入门教程http://www.cnblogs.com/ycxyyzw/archive/2012/10/13/2 ...
- python命令行参数处理模块 optparse 使用参考
from optparse import OptionParser parser = OptionParser() parser.add_option( '-f', '--file', dest='f ...