0

我使用以下方法(在 Qt 6.1.1 中)实现了带有位图的 32x32 自定义光标:

this->setCursor(QCursor(QBitmap(":/Cursors/arrow_up.bmp"), QBitmap(":/Cursors/arrow_up_mask.bmp"), 3, 0));

如果应用程序和文本大小的 Windows 显示设置设置为 100%,则光标将按预期工作。但是,如果应用程序和文本设置的大小增加,Qt 会相应地放大自定义光标并且它们会变得像素化(例如,如果选择 150%,Qt 会将自定义光标的大小增加 50%)。

有没有办法防止 Qt 调整自定义光标的大小?或者,有没有办法知道用户在 Windows 中为应用程序和文本的大小选择了什么,以便我可以提供正确分辨率的光标?

4

1 回答 1

0

尝试这个 :

QCursor cursor = QCursor(QIcon(":/Cursors/arrow_up.bmp").pixmap(32, 32), 0, 0);
this->setCursor(cursor);

表示使用QIcon而不是QBitmap设置其大小pixmap(32, 32)

其他可能对您有帮助的事情:

将此行放入您的 main.cpp 文件中:

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

阅读文档。据我了解,设置AA_EnableHighDpiScaling标志在支持的平台上启用 Qt 中的高 DPI 缩放(另请参阅高 DPI 显示器)。支持的平台是 X11、Windows 和 Android。启用使 Qt 根据操作系统提供的显示比例因子缩放主要(设备独立)坐标系。这对应于将 QT_AUTO_SCREEN​_SCALE_FACTOR 环境变量设置为 1。

于 2021-07-01T18:01:00.210 回答