应小伙伴的要求,做一个小计时器。功能是点击开始就从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】计时器制作的更多相关文章

  1. QT程序制作deb包并安装在应用程序菜单

    制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载 ...

  2. 基于Qt Assistant制作软件帮助文档

    Qt Assistant是Qt自带的一款可定制.可重新发行的帮助文件浏览器.Qt Assistant支持HTML文件,用户可以利用其定制自己的功能强大的帮助文档浏览器.关于Qt Assistant定制 ...

  3. 使用QT来制作串口终端

    为什么要使用QT,因为它是跨平台的. 我现在使用的环境是Win7 64bit,使用VS的编译器来编译QT工程. 安装这套环境简单说一下:先到QT官网下载qt-windows-opensource-5. ...

  4. Qt计时器

    在Qt中使用定时器有两种方法,一种是使用QObiect类的定时器:一种是使用QTimer类.定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度. ■.QObject类的定时器QObje ...

  5. Qt socket制作一个简单的文件传输系统

    服务器 用qt designer设计出服务器界面: 上代码: Server.pro #------------------------------------------------- # # Pro ...

  6. qt 计时器自动刷新图片

    计时器 QTimer *timer; timer->start (); void PictureShow::stopStartPage() { if (timer->isActive()) ...

  7. Qt Creater 制作汽车仪表盘

    最近项目用到了模拟仪表,网上下载大神编写的按个仪表Meter没有成功 转战 QWt 编译后,在creater中仍然无法使用,只可以在代码中使用 百度说是我编译的版本不对 扔到 开始做自己的 这个用到了 ...

  8. pyqt QT设计师制作关于对话框(软件版权申明)

    一.实验环境 1.anaconda2 2.5.0 + python2.7 2.pyinstaller3.0 二.操作步骤 2.1 启动designer.exe 2.2 单击“文件” -> “新建 ...

  9. 6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

     一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件能够指定父对象 QTimer *timer = QTime ...

随机推荐

  1. 《C++Primer中文版》读书笔记——第1章 开始

    istream对象:cin(标准输入对象); ostream对象:cout(标准输出对象) cerr(输出错误和警告) clog(输出一般性信息) 读取数量不定的输入数据,eg , sum=; whi ...

  2. cpoint

    #include<iostream> #include<math.h> using namespace std; class CPoint { public: int cpoi ...

  3. PHP合并数组保留key值

    PHP合并数组,键值不变   尝试了好几个合并数组的函数, 但是都是把key值重置, 导致key值丢失(因为key值是要用到的) 大大说, 最好用数组的相关函数, 网上随意找了下, 还是没找到. 因为 ...

  4. Powerdesigner15 创建数据库生成脚本

    Ctrl + Shift + X,打开脚本编辑界面,使用VBScript编写脚本 点击帮助按钮,可以打开OLE Help,“Libraries >> PdPDM”中可以查看内置的类库.“A ...

  5. 用 Function.apply() 的参数数组化来提高 JavaScript程序性能

    我们再来聊聊Function.apply() 在提升程序性能方面的技巧. 我们先从 Math.max() 函数说起, Math.max后面可以接任意个参数,最后返回所有参数中的最大值. 比如 aler ...

  6. Js操作Select大全(取值、设置选中)

    Js操作Select是很常见的,也是比较实用的. jquery操作select(取值,设置选中) 每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<s ...

  7. jquery的相对父元素和相对文档定位示例代码

    在开发jquery时候经常需要用到定位,有相对父元素定位和相对文档定位,本文为此总结下,有需要的朋友可以参考下 在开发jquery时候经常需要用到定位,这里概括两种定位: 1.相对父元素定位: $(& ...

  8. 2013-07-24 IT 要闻速记快想

    ### ========================= ###凡客有闹钟?从凡客的角度来讲,闹钟等工具类应用是为推广品牌和产品服务,通过工具类产品给大众一个对凡客品牌的认知.而选择推出工具类的产品 ...

  9. mysql命令语句来去除掉字段中空格字符的方法

    mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数.   ...

  10. 通过百度地图API定位--第三方开源--百度地图(一)

    1.把百度地图定位API(下载地址:http://lbsyun.baidu.com/sdk/download?selected=location)里面的libs复制到自己的项目libs里面 2.进行相 ...