Qt处理多屏程序

本文介绍了如何利用Qt库中的QDesktopWidget类来获取和管理多屏幕设置,包括屏幕的扩展模式和复制模式。通过示例代码展示了如何获取屏幕数量、主屏幕索引、屏幕分辨率,并演示了如何将对话框定位到指定屏幕以及实现全屏显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

随着时代的进入,人们对屏幕早已习以为常。所以大家追求越来越大的屏幕,确实大屏给人的震撼感很强。大屏通常是使用众多小屏幕拼接组成的,计算机多屏显示通常有扩展模式复制模式

  • 扩展模式:所有屏幕一字排开,组成长条形(宽*n - 高)屏幕,如下所示:
    在这里插入图片描述
  • 复制模式:所有屏幕显示相同的画面

将屏幕接好之后,打开设置可以设置屏幕模式:
在这里插入图片描述


二、关键代码

#include <QDesktopWidget>

//获取屏幕信息
QDesktopWidget* desktop = QApplication::desktop();      //获取屏幕对象(这个函数必须在创建了 QApplication 对象之后才能使用, 否则会出错)                                                                                         
int screenNum = desktop->screenCount();         		//获取屏幕个数                                                                                  
int mainScreenID = desktop->primaryScreen();    		//获取主屏幕索引,(windows开始菜单所在的屏幕为主屏幕),每个副屏幕序号+1    
QRect screenRect = desktop->screenGeometry(int screen_index);	//根据屏幕索引获取屏幕宽高等属性
int screenWidth = desktop->width();						//获取屏幕的宽
int screenWidth = desktop->height();					//获取屏幕的高                                                                                                                                                                                                                                                                                                                                                                                                         
for(int i=0; i<screenNum; ++i) {         				//获取每块屏幕分辨率                                                                                           
    qDebug()<<"屏幕"<<i+1<<"分辨率: "<<desktop->screenGeometry(i).size();                                                                
}                                                                                                                                   
 
//======================================================================   
//设置对话框mdlg显示在副屏1的左上角坐标
QDialog mdlg;
mdlg.setGeometry(desktop->screenGeometry(1));  
mdlg.show();  
//======================================================================   
//如果想全屏显示在副屏1,则可以获取副屏1的分辨率,更新对话框的大小再设置坐标
mdlg.resize(desktop->screenGeometry(1).size());		//设置对话框全屏
mdlg.setGeometry(desktop->screenGeometry(1)); 		//设置对话框对齐副屏1左上角坐标
mdlg.show();  
//======================================================================                                                                                                                         
                                                                                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝勒里恩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值