qt bitmap的处理 qt模拟按钮单击事件 (-04-13 14:32:31)转载▼
标签: qt it分类: linux
1.qt bitmap图像的处理
从实践来看,qt的rgb图像的处理把rgb的存储位置与windows MFC的刚好反过来了
从qt和mfc有关rgb的结构的定义可以看出:
qt:
QRgb:格式为#AARRGGBB,长度与一个无符号int相同(32bit)
mfc:
COLORREF:格式为#AABBGGRR,长度与一个无符号int相同(32bit)
2.qt模拟按钮单击事件
qt的鼠标事件用QMouseEvent表示,发送event用PostEvent()函数,
要模拟按钮单击,只能先模拟鼠标press,再模拟鼠标release。
如果有哪位兄弟知道直接模拟singal-slot机制,那更方便了,麻烦留言告知一下
示例代码如下:
QMouseEvent* press=new QMouseEvent(QEvent::MouseButtonPress,QPoint(0,0),QT::LeftButton,QT::LeftButton,QT::NoModifier);
QApplication::postEvent(&receiveObject,press);
QMouseEvent* release=new QMouseEvent(QEvent::MouseButtonRelease,QPoint(0,0),QT::LeftButton,QT::LeftButton,QT::NoModifier);
QApplication::postEvent(&receiveObject,release);
从assistant上获取的qt event表述:
1.qt的event通过QObject通知另一个qobject,event用一个QEvent类表示,它是所有event事件的基类,特殊event如鼠标event用QEvent的子类
如QMouseEvent类表示。
2.QWidget重载了event()函数,并在这里把所有的event转发给相应的event处理函数,如mousePressEvent(),mouseReleaseEvent().
3.qt还可以设置一个QObject去监视另一个QObject的event,这个功能通过eventfilter()实现的(installEventFilter()函数)。
4.对于event的截取,我们可以1)重载特定的eventhandler,2)重载QObject的event(),3)安装eventfilter,4)在QApplication安装eventfilter
5)重载QApplication的notify(),此时event还没有转发给eventfilter,可以监视所有的event。