QT入门(3)

1. QT事件 QEven

* 鼠标事件

    + 事件是虚函数,可以进行重载  

    //鼠标进入事件  

    virtual void enterEvent(QEvent *event);  

    //鼠标离开事件  

    virtual void leaveEvent(QEvent *event);  

    //鼠标按下  

    virtual void mouseReleaseEvent(QMouseEvent *ev);  

    //鼠标释放  

    virtual void mousePressEvent(QMouseEvent *ev);  

    //鼠标移动  

    virtual void mouseMoveEvent(QMouseEvent *ev);  

2. 定时器 QTimeEvent

   

 + 利用事件实现定时器

        + startTimer(1000); 启动定时器,单位毫秒,返回一个唯一定时器id

        + void timerEvent(QTimerEvent * ev)

            * 定时器函数,可以通过ev->timerId()== id1来判断当前是哪个id进来的

    + 定时器类QTimer

        +  

        //通过定时器类  

        QTimer * timer = new QTimer(this);  

        //启动定时器 每隔500秒发一个信号  

        timer->start(500);  

        //连接信号  

        connect(timer,&QTimer::timeout,中括号小括号{  

        static int num = 1;  

        ui->label_5->setText(QString::number(num++));  

        });  

3. event事件分发器

    + bool event(QEvent * ev)

        * 返回值是bool类型,如果返回true,代表用户要处理这个事件,不向下分发事件了[类似于钩子]

    + 事件枚举QEvent

        * ev.type();

        * 拦截后使用子类的操作可以使用静态类型转换

            + QMouseEvent *ev = static_cast<QMouseEvent *>(QEvent中行参);

    + 但是尽量别拦截

4. 事件过滤器

    + 在app到事件分发器前还能做个过滤

    + 使用方式

        + 给控件安装时间过滤器

            + installEventFilter(this);

        + 重写eventfilter事件

5. 绘图 QPainter

+ 绘图事件 void paintEvent(QPaintEvent *)

+ 画家类 QPainter(构图的设备)

    + 拿起笔 .setPen(笔)

    + 拿起刷子 .setBrush(刷子)

+ 画笔类 QPen(笔的颜色)

+ 画刷类 QBrush(笔的颜色)

+ 高级操作

    + 效率降低的抗锯齿

        + painter.setRenderHint()

    + 改变画家位置

        + painter.save();保存当前位置

        + painter.restore(); 还原到保存的位置

        + painter.translate(); 移动画家

    + 画家绘制图片drawPixmap

6. 绘图设备

+ QPixmap 专门对图像显示做了优化

+ QBitmap 色深限定为1

+ QImage 专门为图像的像素级访问做了优化

+ QPicture 可以记录和重视画家的QPainter的各类命令

    + 自定义绘图操作


 

7. 文件读写 QFile

+ file.open(打开方式) QtODevice::readOnly

+ 全部读取 file.readAll() 按行读 file.readLine() 判断文件末尾atend()

+ QFile默认支持的是utf-8 指定格式 QTextCodec

    + QTextCodec *codec = QTextCodec::codecForName("gbk");

    + ui->textEdit->setText(codec->toUnicode(array));

+ 关闭文件对象 file.close();

8. 文件信息 QFileInfo

+ QFileInfo info(path);

+ 后缀名 info.suffix()

+ 创建日期 info.birthTime().toString("yyyy/MM/dd hh:mm:ss");

+ 修改日期 info.lastModified().toString("yyyy/MM/dd hh:mm:ss");

Qss 前端人狂喜

+ #myButton 这里的id实际上就是objectName指定的值

+ 伪状态

    + :active 当小部件驻留在活动窗口中时,将设置此状态

    + :checked  该控件被选中时候的状态

    + :hover    鼠标在控件上方

    + :pressed  该控件被按下时的状态

    + :disabled 该控件禁用时的状态

    + :first    该控件是第一个(列表中)

    + :focus    该控件有输入焦点时

9. 动画 QPropertyAnimation

//winLabel 你要对那个组件使用动画  geometry几何结构  

QPropertyAnimation * an = new QPropertyAnimation(winLabel,"geometry");  

//动画时间  

an->setDuration(1000);  

//动画开始

an->setStartValue(QRect(winLabel->x(),winLabel->y(),winLabel->width(),winLabel->height()));  

//动画结束  

an->setEndValue(QRect(winLabel->x(),winLabel->y() + 300,winLabel->width(),winLabel->height()));  

//动画方式  

an->setEasingCurve(QEasingCurve::OutBounce);  

an->start();  

10. 背景音乐 QSound

* qmake: QT += multimedia

* QSound * startSound = new QSound(":/res/TapButtonSound.wav",this); 载入音效

* startSound->play(); 播放

* startSound->setLoops(-1); -1循环次数无限

11. 打包发布

* debug->release

* 运行 运行失败添加环境变量D:\QT\5.12.3\mingw73_64\lib

* 把 Goldreverse.exe 单独丢到一个文件夹下

* cmd中路径后windeployqt .\Goldreverse.exe 运行

* 此时已经可以使用了

* 深入打包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值