Qt は画面 (デスクトップ) のサイズまたは解像度を取得します。

Qt には、画面サイズを取得するために QDesktopWidget と QScreen という 2 つのクラスが用意されています。Qt5 以降、QDesktopWidget は正式に非推奨となり、QScreen に置き換えられます。Qt 6.0 以降のバージョンでは、QDesktopWidget は QtWidgets モジュールから完全に削除されました。

Qデスクトップウィジェット

QDesktopWidget は詳細な位置情報を提供し、ユーザー ウィンドウ内のウィンドウの位置とアプリケーション ウィンドウの位置を自動的に返すことができます。

QDesktopWidget* pDesktopWidget = QApplication::desktop();
    
//获取可用桌面大小
QRect deskRect = QApplication::desktop()->availableGeometry();
//获取主屏幕分辨率
QRect screenRect = QApplication::desktop()->screenGeometry();
//获取屏幕数量
int nScreenCount = QApplication::desktop()->screenCount();

QScreen システム画面サイズを取得します

#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());  //分辨率大小
}

複数の画面がある場合、各画面の範囲が異なり、開始座標も異なります。1 番目の画面の開始座標は (0, 0)、2 番目の画面の開始座標は (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);

 geometry() と availableGeometry() の違い

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();
  • geometry() は、画面のサイズ、つまり画面下部のツールバーを含む画面解像度 (1090*1080) を返します。
  • availableGeometry() は、画面下のツールバーを除いた、利用可能な画面のサイズを返します (1090*1040)

おすすめ

転載: blog.csdn.net/weiweiqiao/article/details/133336503