无边框窗口在Windows上最大化的问题

最近在用QT做一个软电话的系统,由于项目需求,所以要定制窗口标题栏的边框,但窗口最大化后,发生把任务栏也盖住了,这个问题实在疑惑不解,任务栏窗口是位于其它窗口之上的,而我的窗口则没有此属性,为什么我的窗口会盖住任务栏窗口呢?

 

解决方法:

这个问题只有在Windows操作系统上才会出现,所以,还得用Windows的那一套方法来解决,加一个预编译宏就不会影响其它平台的编译了^-^

 

在调用 showMaximized() 之前,设置一下窗口样式就行了,

代码如下:

 

#ifdef WIN32
#include <windows.h>
#endif
void MyMaximize::on_pushButton_clicked()
{
 if (isMaximized()) {
  showNormal();
 } else {
#ifdef WIN32
  // 获取Window的当前样式
  LONG styles = GetWindowLong(winId(), GWL_STYLE);
  // 设置窗口为默认重叠窗口样式,这样最大化后就不会盖住任务栏了,注意,这里要加上 WS_VISIBLE 标志
  SetWindowLong(winId(), GWL_STYLE, WS_OVERLAPPEDWINDOW | WS_VISIBLE);
#endif
  showMaximized();
#ifdef WIN32
  // 还原Window样式
  SetWindowLong(winId(), GWL_STYLE, styles);
#endif
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值