Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Varan от Август 21, 2009, 15:33



Название: Странное поведение "контекстного" меню и underMouse()
Отправлено: Varan от Август 21, 2009, 15:33
Суть такова. По нажатию кнопки мыши вызывается функция mousePressed(QPoint pt), в которой происходит примерно вот что:
Код
C++ (Qt)
QMenu menuSelected(QString::fromUtf8("Уточнение выбора:"));
for (uint i = 0; i < 4; ++i)
{
menuSelected.addAction("Action");
}
QAction* selected = menuSelected.exec(m_pInstrRenderWindow->mapToGlobal(pt));
if ( menuSelected.actions().contains(selected) )
{
qDebug() << menuSelected.actions().indexOf(selected);
}
 
Это для отладки написано, конечно, но уже не так работает, как хочется. Вот место вызова этой функции из обработчика mouseEvent моего виджета (наследника QMainWindow):
Код
C++ (Qt)
qDebug() << "before" << underMouse();
m_InstrCamera.mousePressed(pEvent->pos());
qDebug() << "after" << underMouse();
 

Если мы выбрали что-то, то выводится TRUE - FALSE. Ну ладно, допустим, мышь еще "не успела" прийти в виджет, пробуем еще раз. Опять TRUE - FALSE. Ура. Однако, если мы промазали мимо меню, т.е. ничего не выбрали, то в следующий раз при нажатии мышью будет FALSE - FALSE. Эта штука у меня используется, поэтому интересно, что не так.
Спасибо.