C++ Qt关于多屏幕窗口处理

简介: C++ Qt关于多屏幕窗口处理

一、多显示器Qt窗口处理

假设包含两块屏幕,分辨率分别为1920✖1080,设置为扩展屏,想将窗口(1920✖1080)显示在第二块屏幕上

  1. 首先获取屏幕数量
  2. 若为一块屏幕,setGeometry(0, 0, 1920, 1080)
  3. 若为两块屏幕,获取主屏幕,若第一块屏幕为主屏幕,setGeometry(1920, 0, 1920,
    1080),若第二块屏幕为主屏幕,setGeometry(0, 0, 1920, 1080)

注意:QGuiApplication::primaryScreen()->virtualGeometry(),获取到的主屏幕X、Y都为0,无论主屏幕是第一块屏幕还是第二块屏幕

二、代码

代码如下(示例):

  QDesktopWidget* desktopWidget = QApplication::desktop();
  //获取设备屏幕大小
  int screencount = desktopWidget->screenCount();
  this->setGeometry(0, 0, 1920, 1080);
  if (screencount == 2) {
    QRect rect = desktopWidget->screenGeometry(screencount - 1);
    QScreen *primaryScreen = QGuiApplication::primaryScreen();
    QRect primaryVirtualGeometry = primaryScreen->virtualGeometry();
    int primaryScreenX = primaryVirtualGeometry.x();
    int primaryScreenY = primaryVirtualGeometry.y();
    if (primaryScreenX == 0 && primaryScreenY == 0) {
    this->setGeometry(1920, 0, 1920, 1080);
    }
    else {
    this->setGeometry(0, 0, 1920, 1080);
    }
  }

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:

零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)

https://xxetb.xet.tech/s/VsFMs


相关文章
|
25天前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
31 1
|
1月前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
80 0
|
1月前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
52 0
|
1月前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
103 0
|
1月前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
45 2
|
1月前
|
XML JSON 算法
C++视角下的Qt按钮:从基础应用到高级定制(一)
C++视角下的Qt按钮:从基础应用到高级定制
90 2
|
1月前
|
Linux 数据处理 C++
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(一)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
78 0
|
1月前
|
XML 安全 C++
DBus类型系统以及在Qt和C++ 中的使用(二)
DBus类型系统以及在Qt和C++ 中的使用
44 0
|
1月前
|
XML 存储 Unix
DBus类型系统以及在Qt和C++ 中的使用(一)
DBus类型系统以及在Qt和C++ 中的使用
43 0
|
1月前
|
存储 Linux API
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(三)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
31 1

推荐镜像

更多