本文共 1416 字,大约阅读时间需要 4 分钟。
protected: bool nativeEvent(const QByteArray &eventType, void *message, long *result);
bool Widget::nativeEvent(const QByteArray &eventType, void *message, long *result){ Q_UNUSED(eventType) MSG *param = static_cast(message); switch (param->message) { case WM_NCHITTEST: { int nX = GET_X_LPARAM(param->lParam) - this->geometry().x(); int nY = GET_Y_LPARAM(param->lParam) - this->geometry().y(); // 如果鼠标位于子控件上,则不进行处理 if (childAt(nX, nY) != NULL) return QWidget::nativeEvent(eventType, message, result); *result = HTCAPTION; // 鼠标区域位于窗体边框,进行缩放 if ((nX > 0) && (nX < m_nBorder)) *result = HTLEFT; if ((nX > this->width() - m_nBorder) && (nX < this->width())) *result = HTRIGHT; if ((nY > 0) && (nY < m_nBorder)) *result = HTTOP; if ((nY > this->height() - m_nBorder) && (nY < this->height())) *result = HTBOTTOM; if ((nX > 0) && (nX < m_nBorder) && (nY > 0) && (nY < m_nBorder)) *result = HTTOPLEFT; if ((nX > this->width() - m_nBorder) && (nX < this->width()) && (nY > 0) && (nY < m_nBorder)) *result = HTTOPRIGHT; if ((nX > 0) && (nX < m_nBorder) && (nY > this->height() - m_nBorder) && (nY < this->height())) *result = HTBOTTOMLEFT; if ((nX > this->width() - m_nBorder) && (nX < this->width()) && (nY > this->height() - m_nBorder) && (nY < this->height())) *result = HTBOTTOMRIGHT; return true; } } return QWidget::nativeEvent(eventType, message, result);}
转载地址:http://mvqxi.baihongyu.com/