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

gre*_*reg 6 qt qt4

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

this->setWindowFlags(Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)

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

this->showMaximized();
Run Code Online (Sandbox Code Playgroud)

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

WIN7/Qt4.6

ale*_*sdm 7

你不应该继承QDesktopWidget.

您可以通过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());
Run Code Online (Sandbox Code Playgroud)


小智 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()
{

}
Run Code Online (Sandbox Code Playgroud)