一 资源和图像
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