Qt学习第四天
Qt的事件
鼠标事件
- 鼠标进入事件 enterEvent
- 鼠标离开事件 leaveEvent
- 鼠标按下 mousePressEvent( QMouseEvent ev)
- 鼠标释放 mouseReleasseEvent
- 鼠标移动 mouseMoveEvent
- ev->x() x坐标 ev->y() y坐标
- ev->button() 可以判断所有按键 Qt::LeftButton Qt::RightButton
- ev->buttons() 判断组合按键 判断move时候的左右键 结合&操作符
格式化字符串
QString(“%1 %2”).arg(111).arg(222)
定时器1
利用事件 void QTimer::timerEvent(QTimerEvent *e)
启动定时器 startTimer(1000) 单位是毫秒
timerEvent的返回值是定时器的唯一标识,可以和ev->timerId作比较
定时器2
利用定时器类 QTimer
创建定时器对象 QTimer * timer = new QTimew( this )
启动定时器 timer->start(毫秒)
每隔一定毫秒,发送信号 timeout,进行监听
暂停定时器 timer->stop
event 事件
用途:主要用于将程序中的事件进行分发,也可以用于事件的拦截操作,但是不是主要的用途
主要的形式:bool event(QEvent *e);
返回值是true,代表用户处理了这个事件,不再向下进行分发
判断某个事件的类型时:e->type() == 某个事件 来进行判断
事件过滤器
通过过滤器,可以在程序分发event事件之前再做一次高级拦截
使用时的两个步骤:
1.给控件安装事件过滤器
2.重写eventfilter事件
QPainter
绘图事件 void paintEvent()
声明一个画家对象** QPainter painter(this) ** this 指定绘图设备
通过该格式能够实现:画线,圆,矩形和文字
也可以设置画笔 QPen 的宽度与格式
设置画刷 QBrush 设置画刷的风格
使用抗锯齿的效果:能够实现较好的图像,但效率低
painter.setRenderHint(QPainter::Antialiasing)
对画家进行移动:
painter.translate(100,0)
保存状态 save
还原状态 restore
如果想要手动的调用绘图事件 利用 update
利用画家画图 painter.drawPixmap(x,y,QPixmap(资源路径))
QPaintDevice
** QPixmap 、QImage 、QBitmap(黑白色) 、QPicture、 QWidget**
QPixmap
能够对不同平台做显示的优化
1. QPixmap pix(300,300)
2. pix.fill(Color)
3. 利用画家往 pix 上画画 QPainter painter(& pix)
4. 保存 pix.save(“路径”)
QImage
- 使用方式和QPixmap相似, QImage img(300,300,QImage::Format_RGB32)
- 其余的流程和QPixmap一样
- 可以对像素进行修改 img.setPixel(i,j, value)
QPicture 记录和重现 绘图指令
- QPicture pic
- painter.begin( &pic )
- 保存 pic.save(任意后缀名称)
- 重现 利用画家进行重现 painter.drawPicture( 0,0, pic);
QFile对文件的操作
QFile进行读写操作
QFile file(path 文件路径)
读
file.open(打开方式) 例如:只读形式:QIODevice::readyOnly
全部读取: file.readAll() 或 按行读 file.readLine() 此时用atend()判断是否读完
文件的默认打开格式为 utf-8,可以利用编码格式进行指定相关编码 QTextCodeC
QTextCodec * codec = QTextCodec::codecForName(“gbk”)
ui->textEdit->setText(codec->toUnicode(array))
文件对象关闭 close
写
file.open(QIODevice::writeOnly / Append)
file.write(内容)
file.close 关闭
QFileinfo读取文件信息
QFileInfo info(路径)
可以读取文件的大小 info.size(), 后缀名 info.suffix(), 文件名称 info.fileName()以及 文件路径 info.filePath() 和文件的创建日期 info.created().toString(“yyyy/MM/dd hh:mm::ss”)和最终的文件修改时间 info.lastModified().toString(“yyyy/MM/dd hh:mm::ss”)