在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中,如果你需要获取连接到计算机上的多个屏幕各自的宽度和高度,可以使用QDesktopWidget
或QGuiApplication
配合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等详细信息。