Qt怎样实现无边框窗口最大化

2025-10-22 18:40:25

1、要想实现无边框窗口最大化时不遮挡任务栏,我们需要用到 QDesktopWidget类的 availableGeometry 函数来获取最大化时窗口的大小,该大小将不会包含任务栏的部分。

现在,我们来看一下 QDesktopWidget 类的 availableGeometry 函数。它的访问权限类型为公有。该函数具有三个重载函数,分别为:

const QRect QDesktopWidget::availableGeometry(int screen = -1) const;

const QRect QDesktopWidget::availableGeometry(const QWidget *widget) const;

const QRect QDesktopWidget::availableGeometry(const QPoint &p) const;

Qt怎样实现无边框窗口最大化

2、第一个重载形式带一个默认参数-1,指出要返回大小的窗口其所在屏幕为默认屏幕。之所以要指出是在哪个屏幕,这是因为一个窗口可能在多个不同的屏幕上显示,而窗口大小是与平台相关的。这个重载形式通常也是我们用得最多的。

Qt怎样实现无边框窗口最大化

3、第二个重载形式带一个QWidget类型指针,指出要返回窗口大小的屏幕是包含指定QWidget对象的屏幕。

Qt怎样实现无边框窗口最大化

4、第三个重载形式带一个QPoint对象的引用参数,指出要返回窗口大小的屏幕是包含指定点的屏幕。

Qt怎样实现无边框窗口最大化

1、下面,我通过一个具体例子来教大家怎样实现。在这个例子中,要实现的目标是点击右上角的最大化按钮实现无边框窗口最大化,但最大化时不遮挡任务栏。

Qt怎样实现无边框窗口最大化

2、首先,在设计器界面上的最大化按钮上右击鼠标,选择“转到槽...”。

Qt怎样实现无边框窗口最大化

3、再选择clicked()信号,点击OK。

Qt怎样实现无边框窗口最大化

4、在响应最大化按钮的单击事件函数中,先创建一个QDesktopWidget对象,以便获取最大化窗口的大小(不包含任务栏)。

Qt怎样实现无边框窗口最大化

5、获取到窗口的大小后,将窗口缩放到这个尺寸,再将窗口左上角移动到(0,0)便可以了。

Qt怎样实现无边框窗口最大化

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢