아니요, QPushButton이 호출자가 아닌 메뉴 위치를 관리해야하기 때문에 제안 된 솔루션이 마음에 들지 않았습니다.
그래서이 QPushButton 위젯에 마우스 down/up 이벤트를 게시하여 사용자가 수행하는 것을 시뮬레이션하기로 결정했습니다. 이것은 트릭을했다. 이것은 Qt에서 누락 된 기능을 보완하기위한 해킹입니다.
void simulateMouseClick(QWidget *widget) {
QPoint pos(widget->width()/2, widget->height()/2);
QMouseEvent *evtDown = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
QMouseEvent *evtUp = new QMouseEvent(QEvent::MouseButtonRelease, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
(void) QApplication::postEvent(widget, evtDown);
(void) QApplication::postEvent(widget, evtUp);
}