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

  1. 使用方式和QPixmap相似, QImage img(300,300,QImage::Format_RGB32)
  2. 其余的流程和QPixmap一样
  3. 可以对像素进行修改 img.setPixel(i,j, value)

QPicture 记录和重现 绘图指令

  1. QPicture pic
  2. painter.begin( &pic )
  3. 保存 pic.save(任意后缀名称)
  4. 重现 利用画家进行重现 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”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值