主界面采用无边框方式,采用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);