QT5的QWidget类下去掉了winEvent成员函数,取而代之的是nativeEvent函数,通过这个函数我们可以处理WM_NCHITTEST系统消息把窗口的边界情况告诉操作系统,操作系统就能够根据用户的操作来调整窗口的大小。
需要添加的引用:
#include
#include
重写nativeEvent成员函数:
bool MainForm::nativeEvent(const QByteArray & eventType, void * message, long * result){
Q_UNUSED(eventType);
MSG* pMsg = reinterpret_cast(message);
if(pMsg->message == WM_NCHITTEST){
int xPos = GET_X_LPARAM(pMsg->lParam) - this->frameGeometry().x();
int yPos = GET_Y_LPARAM(pMsg->lParam) - this->frameGeometry().y();
if(xPos > 0 && xPos < 8 && yPos > 0 && yPos < 6){
*result = HTTOPLEFT;
return true;
}
if(xPos > (this->width() - 8) && xPos < this->width() && yPos > 0 && yPos < 6){