原文地址:http://blog.sina.com.cn/s/blog_4868f98601019odo.html 。感谢作者,如果造成任何不便,请联系我删除。
最近要用到多屏显示。
多屏显示的原理其实很好理解,就拿横向扩展来说:
计算机把桌面的 宽度扩展成了 w1(屏幕1的宽度) + w2(屏幕2的宽度) 。
当一个窗口的起始横坐标 > w1,则 他就被显示在第二个屏幕上了。
qt的说明文档中用一张图阐述了这个情况:
QApplication 提供了一个获得virtual desktop的方法:
QDesktopWidget *desktop =  QApplication:: desktop();
返回的 QDesktopWidget 存储着当前桌面的信息。
注意 ,这个函数必须在创建了 QApplication 对象之后才能使用, 否则会出错。具体原因,要问qt。
这个desktop有几个很有用的函数,用来获取当前的屏幕状态和分辨率
1) int desktop->primaryScreen() 
获取主屏幕的索引序号,(windows开始菜单所在的屏幕为主屏幕), 每个副屏幕序号+1
2) int  desktop->screenCount()
获取当前屏幕个数
3) QRect desktop->screenGeometry(int screen_index)
根据当前的屏幕序号获取屏幕宽高等属性
4) int desktop->width()
获取虚拟屏幕全宽, 注意这个比较猛,是获取的总宽度,对于横向扩展屏来说,也就是 屏幕1+ 屏幕2 + ... 的宽度
5) int desktop->height()
获取虚拟屏幕全高
下面的这个程序就可以测试多屏(只测了横屏,没测试纵屏): 根据当前屏幕数量n,生成n个窗口,每个窗口都占据了一个屏幕
#include "mainwindow.h"
#include <QApplication>
#include <QDesktopWidget>
#include <cstdio>
#include <QMessageBox>
typedef struct{
int screen_no;
QRect rect;
}SCREEN;
SCREEN g_screens[10];
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QDesktopWidget *desktop = QApplication::desktop();
int screen_count = desktop->screenCount();
int prim_screen = desktop->primaryScreen();
char warning[100], *idx=warning;
for(int i=0; i<screen_count ;i++ ){
g_screens[i].screen_no = prim_screen + i;
g_screens[i].rect = desktop->screenGeometry(prim_screen + i);
sprintf(idx, "screen%d w[%d], h[%d] ",i, g_screens[i].rect.width(),g_screens[i].rect.height());
idx += strlen(idx);
}
sprintf(idx, "total width[%d] , total height[%d] \n", desktop->width(), desktop->height() );
QMessageBox::warning(NULL, "screen", warning, QMessageBox::Ok);
MainWindow wnd[5];
for(int i=0; i < screen_count; i++){
wnd[i].resize(g_screens[i].rect.width(),g_screens[i].rect.height());
if(i == 0)
wnd[i].move(0,0);
else
wnd[i].move(i* g_screens[i-1].rect.width(),0);
char str[50];
sprintf(str,"this is screen %d",i);
wnd[i].show();
}
return app.exec();
}

一个支持多屏显示的程序相关推荐

  1. c# Winform 开发分屏显示应用程序

    c# Winform 开发分屏显示应用程序 原文 http://blog.csdn.net/soft2buy/article/details/7082668 分屏显示即可把一台主机内运行的多个程序分别 ...

  2. android n进入分屏代码分析_平板电脑全面进入多任务时代,Android N原生支持分屏显示...

    去年十月苹果WWDC上发布iOS9首次原生支持iPad平板电脑的分屏显示,希望通过大屏多任务iPad产品,向微软的Surface为代表的Windows10平板PC发起挑战,撬开商务和企业级市场.近日据 ...

  3. 基于C++实现一个支持简单交互绘图小程序

    资源下载地址:https://download.csdn.net/download/sheziqiong/86763967 资源下载地址:https://download.csdn.net/downl ...

  4. 鸿蒙系统息屏显示动画,魅族Flyme 9:支持息屏显示 Alive壁纸

    今天下午,魅族带来了Flyme 9发布会.魅族表示,系统作为用户与手机交互的媒介,是用户体验的灵魂.回想起来,每一代Flyme都是经典.Flyme以简洁优雅的设计和创新实用的功能为用户创造极致体验. ...

  5. iqooz1服务器无响应,iqooz1支持息屏显示吗,iqooz1可以息屏显示吗

    iQOOZ1手机是2020年6月份发布的新手机,许多 客户想对它多一些掌握,那麼iqooz1适用息屏显示吗? 知名品牌型号规格:iqooz1 系统版本:iqoo UI iqooz1适用息屏显示吗 iq ...

  6. python画布添加背景图片_Python 设置 Canvas 背景图片且支持全屏显示

    图1 全屏显示图片 由于 PhotoImage 若没有被引用,便会自动销毁,所以需要显示的引用它: from tkinter import Tk, Canvas from PIL import Ima ...

  7. VB.NET在WinForm中嵌入谷歌浏览器_制作全屏显示网页程序_并读取INI配置文件_根据配置文件显示不同的网页---VB.NET工作笔记016

    我们做了个项目,科技馆的,需要把绚丽的网页,全屏放到浏览器上显示,但是....他们做的这个网页...我去,只支持谷歌这样的浏览器,在IE这样的浏览器模式下,显示有问题... 不知道是不是因为,没有使用 ...

  8. win7支持分屏显示

    2019独角兽企业重金招聘Python工程师标准>>> 桌面掰成两瓣用 如何实现Win7分屏 作为一个天天写文章的"文人"来说,写文章和查资料是密不可分的,以前使 ...

  9. android锁屏显示应用程序,今日应用:微软又给 Android 做了一款锁屏应用

    微软又做了一款 Android 锁屏应用,质量还不错.如果你已经设置了锁屏,Picturesque可能让你再解锁一次你真的需要在锁屏就处理这么多任务吗? 微软又来给 Android 提供应用了,他们昨 ...

最新文章

  1. Amazon Go开门营业,号称无需现金、无需排队结账,现场究竟体验如何?
  2. sql server存储过程中SELECT 与 SET 对变量赋值的区别
  3. k-means-algorithm
  4. 免费申请Firefly-RK3288开源板
  5. 20个常用Linux性能监控工具/命令
  6. 数据库操作的隔离级别 Transaction Isolation Levels
  7. PyAutoIt 安装(Windows 版)
  8. 【转】JMeter学习(二十七)Jmeter常见问题
  9. Android Studio插件安装
  10. 怎样改变java编码风格_如何说服同事修改些代码的风格(JAVA的)。。求指引
  11. 测试面试题集-逻辑推理题
  12. Eclipse中Java Web开发插件安装
  13. 【转载】自动化测试:为什么受伤的总是我?
  14. 企业销售管理现状分析与解决思路(转)
  15. dategridview代码选中行_使用IntelliJ IDEA进行Java代码调试的技巧
  16. IPV6:移动光猫吉比特GM228-S 桥接+IPV6教程
  17. linux创建lvm分区命令,CentOS下LVM的创建与使用
  18. esp32-qcloud腾通连连编译指南
  19. 空间统计说历史:奥德修斯的归家之路
  20. 英语语法(2)----点破主谓宾系表三大句型

热门文章

  1. Vue 语音播报--消息提醒
  2. 看我如何用XSS“干掉”8/9的顶级杀软厂商
  3. 盘点现代黑客常用的十种技术
  4. python爬取快递100,运行代码就能查询的物流信息
  5. Kubernetes Autoscaling是如何工作的?
  6. Python新手也可以做出超有趣的项目
  7. squirrel校园二手交易平台
  8. 基于Android的校园闲置物品交易平台的设计与实现(二手交易平台)
  9. Postman系列(二)-修改主题和字体大小
  10. linux arduino 字体大小,Arduino Pro IDE,你终于长大了!