2010-04-14 19 views
6

Estoy construyendo una aplicación que tiene su propio código cromático personalizado. He convertido el borde de la ventana por defecto desactivado estableciendo el indicador:Qt/win: showMaximized() solapando la barra de tareas en una ventana sin marco

this->setWindowFlags(Qt::FramelessWindowHint); 

Después de este indicador se establece y el borde de la ventana por defecto está desactivada, todas las llamadas a:

this->showMaximized(); 

resultado en una ventana que ocupa toda la pantalla, superponiéndose a la barra de tareas. ¿Existe un problema común para este u otro método al que debería llamar en lugar de showMaximized()?

Win7/Qt4.6

Respuesta

5

Si se hereda de QDesktopWidget, serías capaz de utilizar availableGeometry(), que devuelve la geometría disponible de la pantalla con pantalla de índice en base a lo decide la plataforma está disponible (por ejemplo, excluye el dock y la barra de menú en Mac OS X, o la barra de tareas en 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

Grande, tenía esto en nuestros buglis durante bastante tiempo :) – atamanroman

7

No debe heredar de QDesktopWidget.

Usted puede obtener la "geometría disponible" al obtener la instancia de QDesktopWidgetQApplication::desktop:

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()); 
Cuestiones relacionadas