zoukankan      html  css  js  c++  java
  • Qt中的 Size Hints 和 Size Policies

    • sizeHint
      这个属性所保存的 QSize 类型的值是一个被推荐给窗口或其它组件(为了方便下面统称为widget)的尺寸,也就是说一个 widget 该有多大,它的一个参考来源就是这个 sizeHint 属性的值,而这个值由 sizeHint() 函数来确定。但是 widget 的大小的确定还有其它因素作用,下面会讲到。现在只需知道 sizeHint() 会返回一个被推荐的尺寸。那么这个尺寸的取值是怎样的呢?当它是一个无效值的时候(sizeHint().isValid() 返回 false,QSize 中 width 或者 height 有一个为复数就会是无效的),什么作用也没有;当它是一个有效值的时候,它就成了 widget 大小的一个参考。Qt 中对 sizeHint() 的默认实现是这样的:当 widget 没有布局(layout),返回无效值;否则返回其 layout 的首选尺寸
    • 例1:
       QWidget *widget = new QWidget;
      
        widget->show();
      
       qDebug() << widget->width() << "," << widget->height();
      
       qDebug() << widget->sizeHint().width() << "," << widget->sizeHint().height();
      
          //output:
      
         //1009 , 520
      
         //-1 , –1
      

       输出结果中第二行:sizeHint() 返回的是一个无效的 QSize,因为 widget 没有布局。

    • 例2:
          QWidget *widget = new QWidget;
      
          QHBoxLayout *layout = new QHBoxLayout;
      
         QPushButton *button = new QPushButton("Ggicci");
      
         layout->addWidget(button);
      
          widget->setLayout(layout);
      
          widget->show();
      
          qDebug() << widget->width() << "," << widget->height();
      
          qDebug() << widget->sizeHint().width() << "," << widget->sizeHint().height();
      
          qDebug() << button->width() << "," << button->height();
         1: //output:
         2: //112 , 45 
         3: //97 , 45 
         4: //90 , 23


      
      
      输出结果中第一行:widget 的实际尺寸 (112, 45);
      输出结果中第二行:sizeHint() 返回 layout 的首选尺寸(97,45)供 widget 参考;
      输出结果中第三行:中间 button 的实际大小;
      从输出结果中可以证明以上说过的两点:
      1) 在 widget 有 layout 的情况下,其 sizeHint() 函数返回的是有效值作为其自身实际尺寸的参考;
      2) sizeHint() 返回的值并不一定会作为 widget 的实际尺寸,因为 widget 的尺寸的决定还有其它因素作用;
      详情请参考:http://www.tuicool.com/articles/uyaYn2
  • 相关阅读:
    谷歌浏览器调试按钮作用
    Android App罕见错误和优化方案
    cordova插件iOS平台实战开发注意点
    xcode8继续愉快的使用插件
    答CsdnBlogger问-关于VR取代安卓的问题
    答CsdnBlogger问-关于职业发展和团队管理问题
    答CsdnBlogger问-关于安卓入行和开发问题
    答CsdnBlogger问-关于定时和后台服务问题
    下载大图的demo by apple,值得研究和参考
    一个不错的mac软件下载站,mark一下 (商业使用请务必支持正版)
  • 原文地址:https://www.cnblogs.com/haoyuanyuan/p/3835971.html
Copyright © 2011-2022 走看看