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 运行
* 此时已经可以使用了
* 深入打包