zoukankan      html  css  js  c++  java
  • Qt窗口屏幕居中显示(有专门的QDesktopWidget,先计算后显示)

       窗口的屏幕居中显示问题,在各开发工具中原理相同,首先使用特定的方法得到显示屏幕的宽度和高度,再根据窗口本身的宽度和高度计算出窗口的左上角坐标位置.

       Qt中可以采用两种方法达到窗口的屏幕居中显示:

    方法一: 显示前先计算出窗口显示位子,并移到对应位子后再显示窗口

    int main(int argc, char *argv[])
    {
     QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
     QApplication a(argc, argv);

     QDesktopWidget *pDesk = QApplication::desktop();
     CVxMainWindow w(pDesk);
     w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
     w.show();
     return a.exec();
    }

        在窗体类的构造方法中,如果使用 setFixedSize(800, 600); 设置了窗口的固定大小, 则运行程序时能达到窗口居中显示效果, 否则窗口并不能按所期望的居中显示在屏幕中,需要采用下面的方法,在移动和显示窗口前重新设置下窗口的大小.

    int main(int argc, char *argv[])
    {
     QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
     QApplication a(argc, argv);

     QDesktopWidget *pDesk = QApplication::desktop();
     CVxMainWindow w(pDesk);
     
    w.resize(800, 600);
     w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
     w.show();
     return a.exec();
    }

     

    方法二: 窗口显示后再移动到合适的位子

    int main(int argc, char *argv[])
    {
     QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
     QApplication a(argc, argv);

     QDesktopWidget *pDesk = QApplication::desktop();
     CVxMainWindow w(pDesk);

     w.show();
     w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
      return a.exec();
    }

    先显示后移动容易产生窗口闪烁,本人不建议采用方法二.

    注意:

    1 使用QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));

      请引入: #include

    2 不能将参数 1 从“QDesktopWidget *”转换为“QWidget *”

      请引入: #include

    http://blog.chinaunix.net/uid-20718335-id-364404.html

  • 相关阅读:
    HTML(图像img、表格table、列表)
    HTML(标题h、段落p、文本格式化、链接a、头部head)
    List的复制 (浅拷贝与深拷贝)
    最新CentOS6.5安装Docker, 使用阿里云源下载(亲测)
    VirtualBox安装CentOS6.5
    P1010 幂次方 题解
    P1469 找筷子 题解
    P1866 编号 题解
    EasyNVR通道离线但视频流可正常播放是什么原因导致的?
    EasyNVR通过国标GB28181协议级联出现报错及播放不了的问题调整
  • 原文地址:https://www.cnblogs.com/findumars/p/5040441.html
Copyright © 2011-2022 走看看