qt 无边框不遮挡任务栏(qt5.14)

在Qt5.14版本中,使用showFullScreen()方法时遇到任务栏被遮挡的问题。传统的解决方案如QApplication::desktop()->availableGeometry()等已过时。官方推荐使用QGuiApplication::screens()来获取屏幕信息。通过设置窗体的最大尺寸,然后调用showMaximized(),可以避免遮挡任务栏。同时,利用QScreen获取主屏信息,可以轻松实现窗体居中显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主界面采用无边框方式,采用showFullScreen()方法时出现了遮挡任务栏的问题。

setWindowFlag(Qt::FramelessWindowHint);

百度了许多博文,几乎都采用:

QApplication::desktop()->availableGeometry();
QApplication::desktop()->primaryScreen();

但是在5.14版本中已经过时了,可能很快就要废弃。

官方给出了新的替代品 QGuiApplication,可以获取到所有的屏幕,并对其操作:

QList<QScreen *> list = QGuiApplication::screens();

或者只对主屏进行操作:

this->setMaximumSize(QGuiApplication::primaryScreen()->availableGeometry().size());
this->showMaximized();

先设置最大尺寸,再在需要最大化的slot中调用showMaximized(),就解决了当前最大化遮挡任务栏的问题。

如果要将窗体移到屏幕正中间的话,也很简单,只要获取屏幕尺寸与窗体尺寸相减就可以了。

QScreen *primaryScreen = QGuiApplication::primaryScreen();
move((primaryScreen->availableSize().width()-this->width())/2,(primaryScreen->availableSize().height()-this->height())/2);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值