2010-04-14 201 views
6

我正在构建具有自己的自定义镶边的应用程序。此标志设置,默认的窗口边界被关闭,任何调用后Qt/win:showMaximized()在无框窗口上重叠任务栏

this->setWindowFlags(Qt::FramelessWindowHint); 

:我已经通过设置标志被默认的窗口边界关闭

this->showMaximized(); 

结果在一个窗口,占据整个屏幕,重叠任务栏。有没有共同的工作,这或另一种方法,我应该调用,而不是showMaximized()?

的Win7/Qt4.6

回答

5

如果从QDesktopWidget继承,你可以使用availableGeometry(),它返回基于什么平台决定索引画面屏幕的可用几何形状可用(例如排除Mac OS X上的停靠栏和菜单栏,或Windows上的任务栏)。

#ifndef WIDGET_H 
#define WIDGET_H 

#include <QtGui> 
class Widget : public QDesktopWidget 
{ 
    Q_OBJECT 
public: 
    Widget(QWidget *parent = 0); 
    ~Widget(); 
}; 

#endif // WIDGET_H 



#include "widget.h" 
#include <QtGui> 

Widget::Widget(QWidget *parent) : QDesktopWidget() 
{ 
    this->setWindowFlags(Qt::FramelessWindowHint); 
    this->showMaximized(); 
    this->resize(width(), availableGeometry().height()); 
} 

Widget::~Widget() 
{ 

} 
+0

大,有这对我们相当长的一段buglis :) – atamanroman 2011-09-01 12:15:28

7

您不应该从QDesktopWidget继承。

您可以通过从QApplication::desktop得到QDesktopWidget实例得到“可用几何”:

QDesktopWidget *desktop = QApplication::desktop(); 
// Because reserved space can be on all sides of the scren 
// you have to both move and resize the window 
this->setGeometry(desktop->availableGeometry());