QT允许自定义窗口控件,并可以在QtDesigner中直接加到父窗口
绘制窗口:
(1)新建一个类,继承于QWidget或者QFrame,最好是QFrame
(2)重写函数paintEvent函数
怎么把自定义的控件加入到Designer里
(1)拖放一个父类控件(Widget或者Frame,在Containers)
(2)选定后右键,点Promote to(提升为),把新建的类名填入Promoted class name(提升的的类名称),然后点Add(添加),最后点promote(提升)即可
控件占满空间:
Qpainter painter(this);
int width = this->width();
int height = this->height(); //获得自己的参数
painter.drawEllipse(0,0,wigth,height);
绘制几何图形:
QT里是使用RGB颜色,用红,绿,蓝三种来定义,分量0~255(不用强记颜色的值,可查询)
QT里有两种绘制风格:
(1)QPen:负责线条的颜色和风格
(2)QBrush:负责填充的颜色和风格(对于非闭合形状如线条,是不用填充的)
QPainter的draw....()函数用来绘制各种图形,更具体的使用方法参考:http://blog.csdn.net/iamdbl/article/details/1630129
widget或者Frame的大小是允许绘制的范围,不要超过
默认情况下,后画覆盖前画
常用的几个类型:
QPoint 点坐标
QSize 宽度和高度
QRect 矩形的的坐标和大小
QPointF 浮点型点坐标
QRectF 浮点型矩形
动画的实现原理:每秒钟重绘N次,对人眼来说看起来是运动的
(1)创建定时器
(2)在定时器的处理函数里调用QWidget::update()函数,通知界面重绘
update函数只是通知界面界面重新绘制,会在事件循环中产生一个“绘制事件”paint Event,在合适的时候才会绘制
绘制字体:
(1)颜色:QPen
(2)字体:QFont
参数:family:字体样式(宋体之类的),用字符串表示
size:大小
weight:粗细,QFont::Bold之类的
italic:是否倾斜
(3)drawText()函数的其中一个重载:前四个参数是位置和大小,第五第六个是对齐方式,最后一个是显示的文本
(4)换行显示:QTextOption对象的setWrapMode函数
绘制图片:
用QPixmap,支持png,jpg的加载
两个方式:
(1)定义QPixmap对象时直接在对象名后加括号,括号内的参数为文件地址
(2)定义QPixmap对象后用load函数,参数为文件地址
QT里图片文件有两种:
(1)系统内的文件,使用绝对路径或者相对路径
(2)资源里的文件,例子(:\xxxxx\resoures\img),注意冒号
绘制参数drawPixmap(target,QPixmap对象,sourse):
(1)源矩形sourse:绘制图像的全部或者一部分 QRect sourse(就是原图片显示多少)
(2)目标矩形target:可以填充到全部窗口或者一部分 QRect target(就是图片在窗口显示的位置)
鼠标事件(继承于QWidget)通过重写函数来让自定义控件支持鼠标事件:
(1)按下 press : [重写 void mousePressEvent(QMouseEvent *event)]
(2)抬起 release :[重写 void mouseReleaseEvent(QMouseEvent *event)]
(3)移动 move :[重写 void mouseMoveEvent(QMouseEvent *event)]
需要用 setMouseTracking(bool)来监听
括号内为true时,无需按下鼠标即可监听鼠标移动
括号内为false时,需要按下鼠标后才可监听
(4)双击 double click :[重写 void mouseDoubleClickEvent(QMouseEvent *event)]
抬起与否一般要用到一个bool型的成员变量,移动要用到QPoint及QPoint类型的成员变量 来处理坐标。
自定义控件发生事件时应以一个信号的形式发送出去:
(1)在类的头文件里声明一个SIGNAL(类似于写一个函数原型)
(2)事件发生时,调用emit+空格+SIGNAL名(),通过emit将信号发送出去(非C++语法,QT自创)
隐藏窗口 hide()函数
屏幕截图 QPixmap xxx = QPixmap::grabWindow(QApplication::desktop()->winld())函数
声音的播放 QSound对象的play()函数
延时功能 QTimer::singleShot(时间,this,SLOT(xxxx))
保存图片功能 QPixmap对象的save()函数
QLabel显示的图片和文字自适应大小:属性 -- QLabel -- text -- scaledContents打勾
截屏的实例:http://blog.csdn.net/taiyang1987912/article/details/38274847
Qt程序全屏运行:showFullScreen()函数