Я пытаюсь получить события касания из одного виджета и смоделировать его в другом виджете. События захвата и имитации касания работают нормально для mousePressEvent, mouseReleaseEvent. Но когда я пытаюсь смоделировать mouseMoveEvent, соответствующие события не попадают всторона назначения.
void SimulateManager::showWidgets()
{
Source.show();
Destination.show();
connect(&Source, SIGNAL(sigMousePress(QMouseEvent *)), this,
SLOT(slotMousePress(QMouseEvent *)));
connect(&Source, SIGNAL(sigMouseMove(QMouseEvent *)), this,
SLOT(slotMouseMove(QMouseEvent *)));
}
void SourceWidget:: mouseMoveEvent(QMouseEvent *event)
{
emit sigMouseMove(event);
}
void SourceWidget::mousePressEvent(QMouseEvent *event)
{
emit sigMousePress(event);
}
void SimulateManager:: slotMousePress(QMouseEvent *event)
{
QPoint pPoint(event->pos().x(),event->pos().y());
QMouseEvent mouseEvent( (QEvent::MouseButtonPress),pPoint, Qt::LeftButton, Qt::NoButton,Qt::NoModifier );
QCoreApplication::sendEvent(&Destination, &mouseEvent);
}
void SimulateManager:: slotMouseMove(QMouseEvent *event)
{
QPoint pPoint(event->pos().x(),event->pos().y());
QMouseEvent mouseEvent( (QEvent::MouseMove),pPoint, Qt::LeftButton,
Qt::NoButton,Qt::NoModifier );
QCoreApplication::sendEvent(&Destination, &mouseEvent);
}
void DesitinationWidget:: mouseMoveEvent(QMouseEvent *event)
{
qDebug()<<Q_FUNC_INFO;
}
void DesitinationWidget::mousePressEvent(QMouseEvent *event)
{
qDebug()<<Q_FUNC_INFO;
}
Приведенный выше код используется для захвата и симуляции.В основном (QEvent :: MouseMove) + (Qt :: LeftButton) предназначен для прокрутки табличного виджета.QCoreApplication :: sendEvent возвращает success.Can любой может помочь мне с этим.