Qt fornece duas classes, QDesktopWidget e QScreen, para obter o tamanho da tela. A partir do Qt5, o QDesktopWidget foi oficialmente descontinuado e substituído pelo QScreen. No Qt 6.0 e versões posteriores, QDesktopWidget foi completamente removido do módulo QtWidgets.
QDesktopWidget
QDesktopWidget fornece informações detalhadas de posição, que podem retornar automaticamente a posição da janela na janela do usuário e a posição da janela do aplicativo.
QDesktopWidget* pDesktopWidget = QApplication::desktop();
//获取可用桌面大小
QRect deskRect = QApplication::desktop()->availableGeometry();
//获取主屏幕分辨率
QRect screenRect = QApplication::desktop()->screenGeometry();
//获取屏幕数量
int nScreenCount = QApplication::desktop()->screenCount();
QScreen Obtém o tamanho da tela do sistema
#include<QScreen>
#include<QRect>
//单屏幕
QScreen* screen = QGuiApplication::primaryScreen(); //获取主屏幕
//多屏幕
QList<QScreen *> screenList = QGuiApplication::screens(); //多显示器
QList<QRect *> rectList;
for(int i = 0; i < screenList.size(); i++){
rectList.append(screenList.at(i).geometry()); //分辨率大小
}
Se houver várias telas, o retângulo de cada tela será diferente e as coordenadas iniciais serão diferentes. As coordenadas iniciais da primeira tela são (0, 0) e as coordenadas iniciais da segunda tela são (1920, 0)
/**
* 设置窗体初始化位置及尺寸。
*/
QScreen* screen = QApplication::primaryScreen();
QRect rectangle = screen->geometry();
int width = rectangle.width();
int height = rectangle.height();
setGeometry(width / 10, height / 10, width * 3 / 4, height * 4 / 5);
A diferença entre geometria() e disponívelGeometria()
QScreen* screen = QGuiApplication::primaryScreen();
QRect rect1 = screen->geometry();
qDebug() << "rect1" << rect1.size().width() << rect1.size().height();
qDebug() << rect1.topLeft();
qDebug() << rect1.bottomRight();
QRect rect2 = screen->availableGeometry();
qDebug() << "rect2" << rect2.size().width() << rect2.size().height();
qDebug() << rect2.topLeft();
qDebug() << rect2.bottomRight();
- geometria() retorna o tamanho da tela, ou seja, a resolução da tela, incluindo a barra de ferramentas na parte inferior da tela (1090*1080)
- availableGeometry() retorna o tamanho da tela disponível, excluindo a barra de ferramentas abaixo da tela (1090*1040)