Доброго времени суток.
Есть стандартная программа со стандартным меню, при наведении мыши на элемент Action в меню, в строке состояния отображается подсказка, которая задаётся в рукопашную в поле statusTrip, как показано на рисунке.
Далее встала задача чтобы подсказки выводились для верхних меню:File, Edit, Help.
Пример на рисунке:
Как ни странно но у них тоже есть поля statusStrip, но они не работают.
Стал искать окольные пути через eventFilter и mouseMoveEvent.
Первый вариант:
...
fileMenu = mainMenuBar->addMenu("File");
....
bool GlobalForm::eventFilter(QObject *obj, QEvent *evt)
{
if(obj == fileMenu)
{
if(evt->type() == QEvent::Enter)
QMessageBox::information(this,"Good test","Well, it is work.");
}
return QObject::eventFilter(obj,evt);
}
Сколько не крутил мышкой возле File, тестовое сообщение так и не выдало.
Второй вариант:
Предварительно установил setMouseTracking(true);
void GlobalForm::mouseMoveEvent(QMouseEvent* event)
{
QPoint pos = event->pos();
QString strX,strY;
strX.setNum(pos.x());
strY.setNum(pos.y());
QPoint posTarget = mainMenuBar->mapToParent(QPoint(0,0));
QString strX1,strY1;
strX1.setNum(posTarget.x());
strY1.setNum(posTarget.y());
if(pos.x()>posTarget.x() && pos.x()<posTarget.x()+50 && pos.y()>posTarget.y() && pos.y()<posTarget.y()+30)
QMessageBox::information(this,"",tr("\"%1").arg(strX1));
}
результат тоже 0.
Друзья помогите решить эту задачку, очень надо. Я уже отчаялся.