Qt学习day04 资源和图像 目录和定时器 鼠标和键盘操作

本文详细介绍Qt中资源和图像处理,包括资源编译器使用、绘图事件触发及自定义绘制,以及QPainter的运用。同时,文章还介绍了目录操作与定时器应用,以及鼠标和键盘事件的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 资源和图像
1 资源编译器(rcc)
1)创建资源脚本(.qrc)
vi test.qrc


0.jpg


2)将资源脚本中描述的图片转换为C++的源文件
rcc test.qrc -o qrc_test.cpp

2 绘图事件
1)当应用程序开始运行或者窗口改变时,绘图事件将自动被触发,也可以调用“update()”来触发.
2)当绘图事件被触发后,对应的事件处理函数将被执行
void paintEvent(QPaintEvent*)[virtual];
3)绘图事件函数是虚函数,如果希望绘图事件触发完成自定义图像绘制,可以在自己的子类中重写该虚函数,然后通过“QPainter”完成自定义图像绘制。

3 Qt二维图形引擎QPainter
QPainter painter(this);
painter.drawImage(QRect,QImage);
QRect:描述矩形区域
QImage:描述图片对象

案例:图图秀
1)使用qtcreator创建工程:ShowPics
2)类信息:ShowPicsDialog
3)设计界面
–》Frame(显式框架)
objectName:m_fmImage
sizePolicy:垂直策略(Expanding)
frameShape:box
–》上一张(m_btnPrev)
–》下一张(m_btnNext)

4)添加资源文本
–》添加新文件:Qt->Qt Resource File
–》指定资源文件名:showpics.qrc
–》完成,默认切换到资源编辑界面
–》将ftp下载images目录拷贝工程目录下
–》添加-》添加前缀
“/new/prefix1”修改为“/”
–》添加-》添加文件
选择images目录下10个图片打开即可

二 目录和定时器
1 目录(QDir)
1)创建目录对象
QDir dir(const QString& path);
path:表示要访问的路径
绝对路径:
“/home/user/Documents”
“C:/Documents and Settings”
相对路径:
“images/landscape.png”
2)遍历目录
QStringList entryList(Filters filters)
filters:过滤器,指定要访问的内容
QDir::Dirs //子目录
QDir::Files //普通文件
QDir::NoDotAndDotDot //不包括".","…"

2 定时器
1)定时器事件 //参考Timer1
void timerEvent(QTimerEvent*)
–>开启定时器
//每隔interval毫秒触发一个定时器事件,返回ID
int startTimer(int interval);
–>关闭定时器
void killTimer(int id);

2)定时器类(QTimer)//参考Timer2
QTimer timer;
timer.start(int interval);//开启定时器
//每次定时器到时,发送信号timeout
connect(&timer,SIGNAL(timeout()),
this,SLOT(mySlot()));
timer.stop();//关闭定时器

案例:摇奖机
1)工程名:Ernie
2)类名:ErinieDialog
3)界面设计
–》m_fmPhoto
sizePolicy:垂直策略(expanding)
frameShape:box
–》m_btnStart

三 鼠标和键盘操作
1 鼠标事件 QMouseEvent
//鼠标按下时执行的事件处理函数
void mousePressEvent(QMouseEvent* event);
//鼠标抬起时执行的事件处理函数
void mouseReleaseEvent(QMouseEvent*);
//鼠标移动时执行的事件处理函数
void mouseMoveEvent(QMouseEvent*);
//鼠标双击时执行的事件处理函数
void mouseDoubleClickEvent(QMouseEvent*);

//判断是否为鼠标左键按下
if(event->button() == Qt::LeftButton){

}

QRect(坐标(x,y),大小(w,h));
QPoint(坐标(x,y));
QSize(大小(w,h));

案例:实现用鼠标拖拽“标签”移动
工程名:Mouse
类名:MouseDialog

设置label背景颜色:
1)stylesheet(样式表)
添加颜色:background-color
2)调色板
autoFillBackground:勾选√
palette:点击继承->改变调色板->选择颜色

2 键盘事件 QKeyEvent*
//按键按下执行的事件处理函数
void keyPressEvent(QKeyEvent*);
//按键抬起时执行的事件处理
void keyReleaseEvent(QKeyEvent*);

案例:实现用方向键控制“标签”移动
1)工程名:Keyboard
2)类名:KeyboardDialog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值