我正在构建一个具有自己的自定义chrome的应用程序.我通过设置标志关闭了默认窗口边框:
this->setWindowFlags(Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)
设置此标志并关闭默认窗口边框后,任何调用:
this->showMaximized();
Run Code Online (Sandbox Code Playgroud)
导致占据整个屏幕的窗口,与任务栏重叠.对于我应该调用的这个或另一个方法而不是showMaximized(),是否有共同的工作?
WIN7/Qt4.6
你不应该继承QDesktopWidget.
您可以通过QDesktopWidget从QApplication :: 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)