最近在用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
}
}