Невозможно вызвать событие мыши на некоторых виджетах

Я пытаюсь вызвать фальшивые клики на QPushButtons.

ButtonsMap::ButtonsMap()
{

m_b1 = new QPushButton("push me 1", this);
m_b2 = new QPushButton("push me 2", this);
m_b3 = new QPushButton("push me 3", this);
m_b1->move(0,0);
m_b2->move(0,40);
m_b3->move(0,80);
connect(m_b1, SIGNAL(clicked()), this, SLOT(setclicked1()));
connect(m_b2, SIGNAL(clicked()), this, SLOT(setclicked2()));
connect(m_b3, SIGNAL(clicked()), this, SLOT(setclicked3()));
}

И затем я использую этот слот для запуска их с помощью класса TouchEvent custum (не QTouchEvent, что-то с нуля)

void TouchToMouse::NewTouchEvent(const TouchEvent& e ) {
...

QWidget *target = clickTarget(m_mw, pos);
switch (e.m_type) {
case APPEAR:
event = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
break;
case MOVE:
event = new QMouseEvent(QEvent::MouseMove, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
break;
case DISAPPEAR:
event = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
break;
}

QApplication::postEvent(target, event);*

}

Моя проблема: это работает, но только для первой кнопки m_b1, даже если QWidget *target указывает на правильный виджет (я проверил адреса). Это похоже на m_b2 а также m_b3 никогда не получать эти события. Есть идеи, что может пойти не так?

0

Решение

События, отправленные с использованием Сообщение событие() отправляются в очередь событий и отправляются при следующем запуске цикла событий. Возможно ли, что после первого события ваш цикл событий останавливается? Попробуйте позвонить QApplication :: processEvents () чтобы убедиться, что все события, находящиеся в данный момент в очереди, обрабатываются.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]