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
相關文章
相關標籤/搜索