qt去掉外边框以后 边界不能拉伸。
第一。根据mouseevent事件到达边界的时候自己处理 通过resize(来设置) 这种需要写的代码较多
windows平台上有更简版的方法。
处理winevent里面的 WM_NCHITTEST
switch(message->message)
{
case WM_NCHITTEST:
int xPos = GET_X_LPARAM(message->lParam) - this->frameGeometry().x();
int yPos = GET_Y_LPARAM(message->lParam) - this->frameGeometry().y();
if(this->childAt(xPos,yPos) == 0)
{
//如果当前的位置没有子widget 那么返回HTCAPTION.也就是可以单击自由移动位置
*result = HTCAPTION;
}
else
{
return false;
}
if(xPos >= 0 && xPos < LEFTSPACE)
*result = HTLEFT; //左边界
if(xPos > (this->width() - RIGHTSPACE))
*result = HTRIGHT; //右边界
if(yPos > (this->height() - BOTTOMSPCAE))
*result = HTBOTTOM; //下边界
if(xPos >=0 && xPos < LEFTSPACE && yPos >(this->height()-RIGHTSPACE))
*result = HTBOTTOMLEFT; //左下
if(xPos > (this->width() - RIGHTSPACE) && yPos > (this->height() - BOTTOMSPCAE) )
*result = HTBOTTOMRIGHT; //右下
还有左上右上。这里没有写。
我们已经处理过了。返回true
return true;
}
交给原来的处理。返回false.
return false;