讓Qt自定義視窗邊界可以拉伸
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;