基于Qt秒表设计(Qt绘图秒表示例)

基于Qt秒表设计

这个只是虚拟机下的Dialog中设计的秒表,大家感兴趣的可以根据自己手机的秒表界面来设计,亦或是有别的想法也可以在ui中添加函数,或者是在ui界面自己添加调整。本篇将给除了给出Qt秒表设计例子之外还会为大家提供一些常用函数。

一、Qt绘图系统简介;
Qt的绘图系统允许使用相同的API在屏幕和其它打印设
备上进行绘制。整个绘图系统基于 QPainter,
QPainterDevice和QPaintEngine三个类。。
QPainter用来执行绘制的操作;QPaintDevice则允许
QPainter在其上面进行绘制,也就是QPainter工作的空间;
QPaintEngine提供了画笔(QPainter)在不同的设备上进行
绘制的统一的接口。
Qt 的绘图系统实际上是,使用 QPainter在
QPainterDevice上进行绘制,它们之间使用QPaintEngine进
行通讯(也就是翻译QPainter 的指令)。

二、QPainter类的绘图函数
drawPoint 点drawLine 线
drawRect 矩形drawPath 路径
drawArc 圆弧drawChord 弦
drawPie 扇形drawEllipse 椭圆
drawText 文字
drawRoundRect 圆角矩形
drawImage drawPixmap drawPicture 显示图像
drawPoints,drawLines,drawRects 多个点、多条线、多个矩形

三、几种常用函数效果图:
在这里插入图片描述
四、画刷和画笔
QBrush定义了QPainter的填充模式,具有样式、颜色、
渐变以及纹理等属性。画刷的style()定义了填充的样式,使
用Qt::BrushStyle枚举,默认值是Qt::NoBrush,也就是不进
行任何填充。
QPen定义了用于QPainter应该怎样画线或者轮廓线。画
笔具有样式、宽度、画刷、笔帽样式和连接样式等属性。画
笔的样式style()定义了线的样式。画笔宽度width()或widthF()
定义了画笔的宽。注意,不存在宽度为 0 的线,画笔宽度通
常至少是 1 像素。
声明画刷或画笔对象的时候,通常可以先指定颜色,然
后再通过类中的setStyle、setWidth等成员函数设置画刷或画
笔属性。
QPainter对象要使用画刷或画笔,通常是调用setBrush
和setPen成员函数,设置过画刷和画笔的状态将会一直保持。

五、图像处理

Qt提供了4个处理图像的类:QImage、QPixmap、
QBitmap,QPicture,它们有着各自的特点。
QImage优化了I/O操作,可以直接存取操作像素数据。
QPixmap优化了再屏幕上显示图像的性能。
QBitmap从QPixmap继承,只能表示黑白两种颜色。
QPicture是可以记录和重启QPrinter命令的类。
对最简单的图片显示而言,用QImage或QPixmap类比较
常见。显示一副图像,可以在paintEvent函数中如下操作:
QPainter painter(this); // 声明QPainter对象
… // 其他绘图操作
// 声明一个QPixmap对象并初始装载图像文件
QPixmap pm("/home/fish/HDU.png");
painter.drawPixmap((rect().width() - pm.width()) / 2,
(rect().height() - pm.height()) / 2, pm); // 居中显示图像

六、秒表设计例子
1、

.pro文件
#-------------------------------------------------
#
# Project created by QtCreator 2019-12-04T16:50:48
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qt_clock
TEMPLATE = app


SOURCES += main.cpp\
        dialog.cpp

HEADERS  += dialog.h

FORMS    += dialog.ui

2、头文件:

dialog.h代码;
#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QTime>
#include <QMouseEvent>

namespace Ui {
   
class Dialog;
}

class Dialog : public QDialog
{
   
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    Ui::Dialog *ui;
    int state;
    int nMSCnt;
    QTime   sTime;
    QList<int> lstCnt;
    int idx;

    QRect   rcBottom;
    QRect   rcLeft;
    QRect   rcRight;
private   slots:
        void    mytimer ( );

    // QWidget interface
protected:
    void paintEvent(QPaintEvent *);

    // QWidget interface
protected:
    void mousePressEvent(QMouseEvent *);

    // QWidget interface
protected:
    void wheelEvent(QWheelEvent *);
};

#endif // DIALOG_H

3、源文件

1)dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
#include <QPainter>
#include <QTimer>

Dialog::Dialog(QWidget *parent)<
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值