Qt程序设置界面显示在屏幕中央(包括多屏机的处理)

        最近在程序中遇到一个问题,在网上搜了很久也没搜到类似的问题,不过还是搜到了几篇相关的博文,才解决了,所以特来把这个问题以及解决方式写在这里,方便后期遇到类似问题的人有所启发。

       我们写界面的时候都会让它显示在屏幕中央,因为到处乱跑的话实在是不方便,之前我一直使用下面这句代码:

 

int main(int argc, char * argv[])
{
    QApplication app(argc, argv);
    Window window;//这个类继承自QWidget
    window.move((app.desktop()->width() - window.width()) / 2, (app.desktop()->height() - window.height()) / 2); 
    window.show();
    return app.exec();
}

        这段代码是没问题的,百试百灵,包治百病。但是因为面向的客户大多是金融分析师和操盘手,他们为了更直观全面的看到实时行情,所以他们的电脑都是多屏机,少则2个显示器,多则能达到8个屏幕(2*4)。在给他们使用程序的时候他们的一致反馈是程序的界面总是显示不全,查看起来不方便。类似这样:

 

查阅了很多资料查到一个最根本的类QDesktopWidget。有关于这个类的详细说明请参考Qt助手文档或者这篇博客QDesktopWidget详细说明。下面直接放一个小程序的代码,复制即可用: 

 

 
  1. int main(int argc, char * argv[])

  2. {

  3. QApplication a(argc, argv);

  4. screenTest widget;

  5. widget.show();

  6. return a.exec();

  7. }

  8.  
  9. void screenTest::showInfo()//自己定义的函数,用于显示信息

  10. {

  11. QDesktopWidget * desktop = QApplication::desktop();

  12.  
  13. //获取程序所在屏幕是第几个屏幕

  14. int current_screen = desktop->screenNumber(this);

  15. //获取程序所在屏幕的尺寸

  16. QRect rect = desktop->screenGeometry(current_screen);

  17. //获取所有屏幕总大小

  18. QRect rectA = desktop->geometry();

  19. //获取所有屏幕的个数

  20. int screen_count = desktop->screenCount();

  21. //获取主屏幕是第几个

  22. int prim_screen = desktop->primaryScreen();

  23.  
  24. QString temp = "total screen size = " + QString::number(screen_count);

  25.     temp = temp + "\ncurrent screen num = " + QString::number(current_screen);

  26.     temp = temp + "\ncurrent screen rect " + QString::number(rect.width()) + "*" + QString::number(rect.height());

  27.     temp = temp + "\nwhole screen rect " + QString::number(rectA.width()) + "*" + QString::number(rectA.height());

  28. }

       这样子就可以了,是不是很简单。希望能帮助到你,比心。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值