我找到了一些解决方案。就我而言,这 - 是指向QMainWindow
. 主要思想:捕捉点击,获取globalPos
,隐藏窗口并点击操作系统。但它应该是特定于操作系统的代码,我可以给你一个适用于 Windows 的例子。你应该创建eventFilter
(我希望你知道怎么做,所以我发布下一个代码)。
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj == this && event->type() == QEvent::MouseButtonRelease)
{
qDebug() << "mouse";
QMouseEvent *mouse = static_cast<QMouseEvent*>(event);
qDebug() << mouse->globalPos();
QPoint point = mouse->globalPos();
this->hide();
//start of OS specific code
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x(),point.y(),0,0);
mouse_event(MOUSEEVENTF_LEFTUP,point.x(),point.y(),0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,point.x(),point.y(),0,0);
mouse_event(MOUSEEVENTF_LEFTUP,point.x(),point.y(),0,0);
//this->show();//as you want
}
return QObject::eventFilter(obj, event);
}
在我的示例中,窗口将隐藏,我们模拟双击。在我的电脑上,我可以忽略QMainWindow
并打开被关闭的图片QMainWindow
(我看不到它,我只看到了我的QMainWindow
,但是点击被忽略了,我们把这个点击交给了操作系统)