event 或 mousePressEvent 函数适用于小部件内部,但我想在单击标题栏(菜单栏的上部,包含关闭按钮等)时捕获
我怎样才能做到这一点?
您可以重写nativeEvent,然后获取鼠标位置与geometry(不包括窗口框架)和frameGeometry(包括窗口框架)进行比较,以检测它是否击中标题栏
bool MyClass::nativeEvent(const QByteArray & eventType, void * message, long * result)
{
MSG* msg = (MSG*)(message);
if (msg->message == WM_NCLBUTTONDOWN)
{
int mouseX = GET_X_LPARAM(msg->lParam);
int mouseY = GET_Y_LPARAM(msg->lParam);
QRect frame = frameGeometry();
QRect content = geometry();
qDebug() << "mouseX: " << mouseX << "mouseY:" << mouseY;
qDebug() << "frame: " << frame;
qDebug() << "content: " << content;
if (mouseY < content.y() && mouseY >= frame.y())
{
qDebug() << "Hit title bar";
}
}
*result = 0;
return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)