2010-04-14 28 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());