我正在构建一个拥有自定义chrome的应用程序。我通过设置标志来关闭默认窗口边框:
this->setWindowFlags(Qt::FramelessWindowHint);
设置此标志并关闭默认窗口边框后,任何调用:
this->showMaximized();
导致窗口占据整个屏幕,与任务栏重叠。对于我应该调用的这个或另一个方法而不是showMaximized()?
是否有共同的工作的Win7 / Qt4.6
答案 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()
{
}