Qt获取电脑屏幕大小

在Qt中获取电脑屏幕的大小(宽度和高度),可以使用QDesktopWidget类(对于Qt 4.x和早期的Qt 5.x版本)或QScreen类(对于较新的Qt 5.x版本及以上)。以下分别给出这两种方法的示例代码:

使用 QDesktopWidget (适用于Qt 4.x和早期Qt 5.x)

#include <QDesktopWidget>

// 获取主屏幕尺寸
QDesktopWidget *desktop = QApplication::desktop();
int screenWidth = desktop->screen()->width();
int screenHeight = desktop->screen()->height();

// 输出屏幕尺寸
qDebug() << "Screen size: " << screenWidth << "x" << screenHeight;

使用 QScreen (推荐,适用于Qt 5.x及以上)

#include <QScreen>

// 获取主屏幕尺寸
QScreen *screen = QGuiApplication::primaryScreen();
QRect screenGeometry = screen->geometry();

int screenWidth = screenGeometry.width();
int screenHeight = screenGeometry.height();

// 输出屏幕尺寸
qDebug() << "Screen size: " << screenWidth << "x" << screenHeight;

上述两种方法均能有效地获取当前电脑屏幕的宽度(screenWidth)和高度(screenHeight)。选择使用哪一种取决于你正在使用的Qt版本。如果你使用的是较新的Qt版本(推荐使用),应优先采用QScreen类,因为它提供了更现代且功能更全面的屏幕管理接口。

无论哪种方法,最终都会输出类似这样的信息:

Screen size: 1920x1080

这表示当前屏幕的宽度为1920像素,高度为1080像素。这些信息可用于布局应用程序窗口、调整图像大小等与屏幕相关的操作。

如何获取多个屏幕的分辨率

在Qt中,如果你需要获取连接到计算机上的多个屏幕各自的宽度和高度,可以使用QDesktopWidgetQGuiApplication配合QScreen类来实现。这里是一个基本示例:

#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>

// 获取所有屏幕的分辨率
void getScreenResolutions()
{
    // 使用QDesktopWidget方式(适用于旧版本Qt)
    const auto& desktop = qApp->desktop();
    for (int i = 0; i < desktop.screenCount(); ++i) {
        QRect rect = desktop.screenGeometry(i);
        qDebug() << "Screen " << i << " Resolution: " << rect.width() << "x" << rect.height();
    }

    // 使用QGuiApplication + QScreen方式(适用于Qt 5.0及以上版本,推荐)
    foreach (QScreen *screen, QGuiApplication::screens()) {
        QRect geometry = screen->geometry();
        qreal dpiX = screen->logicalDotsPerInchX();
        qreal dpiY = screen->logicalDotsPerInchY();
        qDebug() << "Screen Resolution: " << geometry.width() << "x" << geometry.height()
                 << ", DPI: " << dpiX << "x" << dpiY;
    }
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 调用获取屏幕分辨率的函数
    getScreenResolutions();

    return app.exec();
}

这段代码首先会遍历所有连接到系统的屏幕,并打印出每个屏幕的分辨率。在较新的Qt版本中,推荐使用QGuiApplication::screens()方法,因为它能够更好地处理多屏幕环境以及高DPI的情况。通过QScreen对象,你不仅可以获取屏幕的几何尺寸(即分辨率),还可以获取屏幕的逻辑DPI等详细信息。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

telllong

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值