Qt/win:无框窗口上的 showMaximized() 重叠任务栏
Posted
技术标签:
【中文标题】Qt/win:无框窗口上的 showMaximized() 重叠任务栏【英文标题】:Qt/win: showMaximized() overlapping taskbar on a frameless window 【发布时间】:2010-04-14 21:29:42 【问题描述】:我正在构建一个具有自己的自定义 chrome 的应用程序。我通过设置标志关闭了默认窗口边框:
this->setWindowFlags(Qt::FramelessWindowHint);
设置此标志并关闭默认窗口边框后,任何调用:
this->showMaximized();
导致窗口占据整个屏幕,与任务栏重叠。我应该调用此方法或其他方法而不是 showMaximized() 是否有常见的解决方法?
Win7/Qt4.6
【问题讨论】:
【参考方案1】:你不应该从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());
【讨论】:
【参考方案2】:如果您从 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()
【讨论】:
太棒了,这个在我们的buglis上已经有一段时间了:)以上是关于Qt/win:无框窗口上的 showMaximized() 重叠任务栏的主要内容,如果未能解决你的问题,请参考以下文章