Qt / win:showMaximized()在无框窗口上重叠任务栏

时间:2010-04-14 21:29:42

标签: qt qt4

我正在构建一个拥有自定义chrome的应用程序。我通过设置标志来关闭默认窗口边框:

this->setWindowFlags(Qt::FramelessWindowHint);

设置此标志并关闭默认窗口边框后,任何调用:

this->showMaximized();

导致窗口占据整个屏幕,与任务栏重叠。对于我应该调用的这个或另一个方法而不是showMaximized()?

是否有共同的工作

的Win7 / Qt4.6

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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()
{

}