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

2024-10-12 15:51:44

当我们进行Qt编程时,常常需要对窗口进行无边框处理。这样,接下来就可以更为方便地对窗口进行自定义绘制,以便实现更为惊艳的视觉效果。不过,由于窗口没有边框了,所以也存在一个问题:这就是当窗口最大化时,往往会覆盖整个屏幕,将任务栏也遮挡住,从而与我们想要的效果相去甚远。那么,Qt怎样才能实现无边框窗口最大化时不遮挡任务栏呢?

工具/原料

Qt 5.6

一、需要用到的函数

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怎样实现无边框窗口最大化

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

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

二、示例

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

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

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

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

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

Qt怎样实现无边框窗口最大化
猜你喜欢