我有一个嵌入 Flash 播放器并加载 swf 的 QAxWidget。我不想使用小部件,而是想将小部件渲染为 QImage,然后将该图像用作我的 OpenSceneGraph 节点中的纹理。一切都很好,到目前为止。但是由于没有可见的小部件,我必须从我的 osgView 获取鼠标移动/按下/释放事件,计算到我的节点的相应位置,并将事件发送到 Flash 播放器以使动作脚本鼠标事件起作用。计算部分是明天的问题。但到目前为止,我无法向播放器发送任何自定义鼠标事件。有人有意见吗?
这是示例代码,
BFlashWidget::BFlashWidget(QWidget *parent)
: QAxWidget(parent)
{
QSize imgSize(800,600);
setMinimumSize(imgSize);
setMouseTracking(true);
mQtImg = QImage(imgSize, QImage::Format_RGBA8888);
setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
dynamicCall("LoadMovie(long, string)", 0,
QDir::currentPath() + "//deneme.swf");
activateWindow();
}
BFlashWidget::~BFlashWidget()
{
}
QImage BFlashWidget::getImage()
{
QPainter painter(&mQtImg);
render(&painter);
return mQtImg;
}
void BFlashWidget::simulateMouseMove(QMouseEvent *e)
{
QApplication::sendEvent(this, e);
QApplication::processEvents();
}
void BFlashWidget::simulateMousePress(QMouseEvent *e)
{
QApplication::sendEvent(this, e);
QApplication::processEvents();
}
void BFlashWidget::simulateMouseRelease(QMouseEvent *e)
{
QApplication::sendEvent(this, e);
QApplication::processEvents();
}
当我调用那些模拟MouseXXXXX 方法时,播放器什么也不做