C++学习笔记day53-----Qt-资源编辑器、绘图事件(画家类)、定时器事件触发的执行函数、文件类、鼠标事件类、键盘事件类

Qt提供了一个叫做资源编辑器的工具(rcc)
它用于将一些资源(例如:图片)编译成C++的源代码,静态的编译到源代码中。
如果不借助qtcreator,其过程如下:
1、创建一个资源脚本
资源脚本的后缀名为.qrc
这是一个包含一张图片的资源脚本,prefix表示资源路径,和系统路径不同。
资源路径仅用于区分不同资源。在使用qtcreator的时候,可以更直观的感受。

/*test.qrc*/
<RCC>
    <qresource prefix="/">
        <file>0.jpg</file>
    </qresource>
</RCC>

2、将.qrc脚本文件编译成.cpp源文件
将上述的资源脚本,通过rcc指令,编译成.cpp结尾的源文件。
rcc test.qrc -o qrc_test.cpp
产生的qrc_test.cpp比较大,里面包含了图片的二进制数据。
通过qtcreator实现资源的静态编译
1、在项目窗口中右键项目名称选择添加新文件
2、选择Qt,再选择Qt Resource File
3、填写资源的名称(可以随便填写,最好带有意义),选择资源文件存放的位置
4、跳转到资源界面之后,选择添加前缀,前缀名修改(可随意修改,只用于标识不同资源)
5、添加文件,选择需要加进来的资源
之后就可以根据资源的路径来使用这些资源了,编译的时候,也会和代码直接编译到一起。
注意:资源路径的使用,必须加:和系统路径区分 “:/image/0.jpg”
绘图事件:
1、当程序开始运行的时候,或者界面发生变化的时候,会触发绘图事件。同时将自动调用绘图事件处理函数”void void paintEvent(QPaintEvent *event);”这个函数,是一个顶层基类的虚函数,用户可以在自定义的类中,重写这个虚函数,编写自定义的绘图事件处理。
2、当用户手动调用update()/repaint()函数时,也是可以触发绘图事件。
这里介绍一个和绘图相关的类,QPainter类。
QPainter
这个类是Qt中的一个二维图形引擎。
这里介绍它的一个画图函数:
void dramImage(QRect,QImage);
QRect:矩形区域
QImage:要绘制的图像
定时器事件
Qt有定时器功能,当开启一个定时器之后,等到定时器的事件到来之后,会触发定时器事件,这个时候会自动调用定时器事件处理函数”void timeEvent(QTimerEvent *);”
同样的,这个函数也是一个顶层基类的虚函数,可以在用户的类中重写它,来自定义定时器事件处理函数。
QDir
这个类是Qt中的文件类,用于操作文件/文件夹
介绍一个成员函数
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
这个成员函数的第一个参数,是过滤器,QDir::Filters是QDir类中的一个枚举类型,里面放了许多文件类型
QDir::Files 普通文件
QDir::Dirs 子文件夹
QDir::NoDotAndDotDot 不包含当前文件夹和上级文件夹
鼠标事件
当鼠标有相应的动作的时候,就会触发相应的鼠标事件,就会调用相应的鼠标事件处理函数。不过鼠标事件处理函数有很多,例如:
void mousePressEvent(QMouseEvent *); 鼠标按下
void mouseReleaseEvent(QMouseEvent *); 鼠标放松
void mouseMoveEvent(QMouseEvent *); 鼠标移动
void mouseDoubleClickEvent(QMouseEvent *); 鼠标双击
可以看到鼠标事件处理函数还带有一个形式参数,这个形式参数的类型是鼠标事件类型(虽然绘图事件和定时器事件也有相应的事件类型形式参数,但是没有用到,所以就不介绍了)。
QMouseEvent
这个类中,记录了鼠标事件的信息,这里介绍一个成员函数。
Qt::MouseButton QMouseEvent::button() const
这个成员函数的功能是返回触发鼠标事件的原因。它的返回值类型是 Qt::MouseButton ,这是一个枚举类型,它的值包含了鼠标的所有动作,例如:
Qt::LeftButton 左键点击
Qt::RightButton 右键点击
键盘事件
当键盘有按键按下或者松开的时候,都会触发相,应的键盘事件,会调用相应的键盘事件处理函数:
void keyPressEvent(QKeyEvent *);
void keyRelaseEvent(QKeyEvent *);
QKeyEvent
键盘事件类中,记录了键盘事件的信息,这个形式参数和鼠标事件处理事件一样,系统会填写,函数从这个类的对象中获取信息即可。
这里介绍一个成员函数
int QKeyEvent::key() const
这个成员函数返回触发键盘事件的按键值,它的返回值也是一个枚举类型,包含了标准键盘上的所有按键,和一些扩展按键。

猜你喜欢

转载自blog.csdn.net/displaymessage/article/details/80684504
今日推荐