Как получить глобальную координату мыши вне приложения в Qt?
Я создаю новый элемент, который унаследован от QWidget и представляет собой комбинацию LineEdit и Button.
Теперь, когда я нажимаю на кнопку, должен отображаться список (или, другими словами, должен отображаться завершитель).
Теперь требование состоит в том, что, когда я щелкаю мышью вне завершителя, завершитель будет закрыт. Поэтому мне нужно знать глобальную координату мыши, чтобы проверить, находится ли мышь внутри завершителя или нет. Как мне это сделать?
LineEditWithButton.h
class LineEditWithButton : public QWidget
{
Q_OBJECT
public:
LineEditWithButton( QWidget *p_parent = nullptr );
void showCompleter(); /* This function shows the Completer */
.............
protected:
void keyPressEvent( QKeyEvent *p_event ) override;
void mousePressEvent( QMouseEvent *p_event ) override;
.........
private slots:
void toggleCompleter(); /* slot to hide/show the completer */
void lineEditChanged(); /* slot when text in the LineEdit changes */
.............
private:
MyButton *m_button = nullptr; /* This variable holds the Button beside the LineEdit */
MyLineEdit *m_lineEdit = nullptr; /* This variable holds the LineEdit */
MyCompleter *m_completer = nullptr; /* This variable holds the Completer */
.........
};
LineEditWithButton.cpp
void LineEditWithButton::mousePressEvent( QMouseEvent *p_event )
{
QPoint globalPosition = p_event->globalPos();
QRect compRect = m_completer->geometry();
if ( !compRect.contains( globalPosition ) && m_completer->isVisible() )
{
m_completer->hide();
}
}
Эта функция не работает для меня. Я установил точку останова в этой функции, но точка останова не будет достигнута. Как я могу решить мою проблему?