让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;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值