class 类名{
Q_OBJECT
public slots:
槽函数
signals:
信号函数
};
只支持QT类提供的信号和槽函数
要求信号函数是QT类提供,槽函数自定义
emit 信号函数名(实参表);
需要手动的进行连接(connect)
和槽函数的形参表保持一致。
QMessageBox类
QDebug类
QDialogButtonBox类
QPixMap类
QIcon类
QFontDialog类
QColorDialog类
QFont类
QColor类
QSqlQuery
QSqlQueryModel
QSqlDababase
QSqlError
资源:
音视频等多媒体资源,并与应用程序结合在一起
媒体文件:图像、音视频文件本身,如:logo.png
资源脚本:用于描述资源的XML文件,如: ShowPics.qrc
资源脚本,因此需要先用QT的资源编译器rcc将资源
脚本连同它所引用的媒体文件一起编译成C++源文件
rcc -name ShowPics ShowPics.qrc -o qre_ShowPics.cpp
事件是由窗口系统或者自身产生的,用以响应所发生的
各类事情,比如用户按下并释放了键盘或者鼠标、窗口因
暴露而需要重绘、定时器到时而应有所动作,等等
从某种意义上讲,事件比信号更原始,甚至可以认为大多
数信号其实都是由事件产生的。比如一个下压式按钮首先
感受到的是鼠标事件,在进行必要的处理以产生按钮下沉
继而弹起的视觉效果之后,才会发射 clicked()信号
myWnd --> QWidget -> QObject
其 QEvent型参数标识了具体的事件类型
伪代码:
bool QObject:: event (QEvent* e)
{
if (e == mouse)
{
void QWidget::mousePressEvent (QMouseEvent* e)
void QWidget:: mouseReleaseEvent (QMouseEvent* e)
}
if(e == key)
{
void QWidget::keyPressEvent (QMouseEvent* e)
void QWidget:: keyReleaseEvent (QMouseEvent* e)
}
}
event()虚数,并根据具体事件调用具体事件处理函数
void QWidget::mousePressEvent (QMouse Event* e)
void QWidget::mouseReleaseEvent (QMouse Event* e)
void QWidget::paintEvent (PaintEvent* e):
的子类覆盖,以提供针对不同窗口部件类型的事件处理
而不见的实现者更关心覆盖哪些事件处理函数
当有下列情况之一发生时,窗口部件会收到绘制事件,
即 QWidget类的 paintEvent()虚函数会被调用
最终调用的是子类中重写的PaintEvent()事件函数
窗口被创建以后第一次显示出来
窗口由隐藏状态转变为可见状态
窗口由最小化状态转变为正常或最大化状态
窗口超出屏幕边界的区域进入屏幕范围之内
窗口被遮挡的区域因某种原因重新暴露出来
窗口因尺寸大小的变化需要呈现更多的内容
QWidget类的 update()成员函数被调用
实现诸如显示文本、绘制图形、瀘染图像等操作
void ShowPicsDlg::paintEvent(QPaintEvent *e)
绘制矢量文字
绘制几何图形
绘制响度映射和图像
反走样,像素混合,渐变和矢量路径
平移、选择、错切、缩放等线性变换
8> QPainter类通过构造函数接收绘制设备,即在什么上画
QPainter::QPainter(QPaintDevice* device);
9> QPainter类用于渲染图像的众多成员函数之一
void QPainter::drawImage(const QRect& rect,const QImage& image);
如何在速度与精度之间进行取舍
度则完全依赖于平台自带的渲染引擎,比如 Linux的X11或
者 Windows的GDI,相同代码的渲染效果因之大相径庭
最后再将渲染结果一次性复制到屏幕。这样可以总是使用
QT内置的渲染引擎,以在所有平台上获得相同的显示效果
BMP、GIF,JPG,JPEG、PNG、PBM、PGM、PPM、TIFF,XBM, XPM
QImage::QImage (const char* fileName,const char* format=0)
void ShowPicsDIg::paintEvent (QPaintEvent* e) {
QPainter painter (this)
QRect rcImage = ui->m_frmImage->frameRect();
rcImage.translate(ui->m_frmImage->pos());
QImage image ( ":/images/"+
QString::number(m_idxImage)+".jpg");
painter. drawImage(rclmage, image);
}
void QWidget::update (void); //引发绘制事件
void QWidget::repaint (void); //直接调用
paintEvent();